如何在Zend Framework中使用电子邮件布局

时间:2010-07-20 23:24:31

标签: php zend-framework zend-layout

我想使用我发送的电子邮件的布局。我目前正在为网页使用Zend Layout,但我也希望对我的电子邮件进行主题化。

这是我尝试过的。

这是我发送电子邮件的功能

    $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

2 个答案:

答案 0 :(得分: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的实例,以便在呈现布局时可以访问查看变量。你也可以编写一个视图助手来处理这个问题。

答案 1 :(得分:0)

您是否考虑过使用Zend_View生成电子邮件模板?