2010-07-20 2 views
3

Я хотел бы использовать макет для писем, которые я отправляю. В настоящее время я использую макет Zend Layout для веб-страниц, но хотел бы также рассказать о своих письмах.Как использовать раскладку для электронной почты в Zend Framework

Вот что я пробовал.

Это моя функция, которая отправляет сообщения электронной почты

$layout = Zend_Layout::getMvcInstance(); 
    $this->_view->render($template); 
    $html = $layout->render('email'); 
    $this->setBodyHtml($html,$this->getCharset(), $encoding); 
    $this->send(); 

Схема электронной почты просто

The email content 
    <?php echo $this->layout()->content; ?> 

Когда речь идет через по электронной почте он просто ...

The email content 

ответ

5

Вы очень близки по своему первоначальному методу; Однако, вы должны выполнить несколько дополнительных шагов на Zend_Layout, чтобы получить то, что вы хотите:

$layout = Zend_Layout::getMvcInstance(); 
$layout->setLayout('email') 
    ->disableLayout(); 
$layout->content = $this->_view->render($template); 
$html = $layout->render(); 

$this->setBodyHtml($html, $this->getCharSet(), $encoding)->send(); 

Вызов Zend_Layout::disableLayout() предотвращает прямой выход отрисовки макета и позволяет вместо того, чтобы хранить обработанный макет в переменной $html. Затем вам необходимо вручную сохранить рендеринг шаблона Zend_View в переменной Zend_Layout::content. После этого вы настроены.

Вы также можете использовать Zend_Layout::setView для установки экземпляра Zend_View в макете, чтобы при визуализации макета вы можете получить доступ к переменным вида. Возможно, вы также можете написать помощник вида, чтобы позаботиться об этом.

+0

, если вам понадобится исходный шаблон для отображения обычного вывода MVC, вы можете просто клонировать макет, чтобы не переопределять содержание/макет/параметры, используйте '$ layout = clone Zend_Layout :: getMvcInstance();' как первая строка – DesertEagle

0

Считаете ли вы, что используете Zend_View для создания своего шаблона электронной почты?

+0

Он использует Zend_View для шаблона электронной почты. Я хочу иметь шаблон шаблона, в который я ввожу конкретный шаблон, точно так же, как Zend_Layout для веб-страниц. –

+0

Ну, я спрашиваю, потому что в этом случае вам нужно использовать компонент «Макет» в автономном режиме: http://framework.zend.com/manual/en/zend.layout.quickstart.html – Chris

+0

В конце концов, я просто используя Zend_View с ' render ('mail_header.phtml'); ?> 'перед контентом и' render ('mail_footer.phtml'); ?> 'после содержимого. Так же, как и старые добрые дни заголовка и нижнего колонтитула PHP: –