我使用CakeEmail如下:
$Email = new CakeEmail();
$Email->template('my_template', 'my_layout');
$Email->subject('My Subject');
// ...
如何访问“我的主题”? my_layout.ctp
中的值?
我能找到的最接近的是this,但它并不是很相关。我正在查看CakeEmail::_renderTemplates()
source code并且它似乎没有这样做,但我不确定。
我知道我也可以将主题行传递给$Email->viewVars
,但这不是很灵活。请指教!
答案 0 :(得分:3)
除了将主题设置为视图var之外别无其他。
答案 1 :(得分:3)
除了设置View变量之外,无法使用CakeEmail
执行此操作。但是,您可以延长CakeEmail
,以便将电子邮件的主题添加到模板中的可用变量中。
我还没有对此进行过测试,但您应该能够做到这样的事情: -
// app/Lib/CustomCakeEmail.php
App::uses('CakeEmail', 'Network/Email');
class CustomCakeEmail extends CakeEmail {
protected function _renderTemplates($content) {
if (!empty($this->_subject) && empty($this->_viewVars['subject'])) {
$this->_viewVars['subject'] = $this->_subject;
}
return parent::_renderTemplates($content);
}
}
此处CakeEmail::_renderTemplates()
被扩展为在视图变量中设置主题(只要它还没有在别处设置)。然后,您将使用扩展类而不是CakeEmail
,如下所示: -
App::uses('CustomEmail', 'Lib');
$Email = new CustomCakeEmail();
$Email->template('my_template', 'my_layout');
$Email->subject('My Subject');
您的视图模板将包含一个$subject
变量,其中包含电子邮件的主题。