В отличие от установки переменной 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
переменную, содержащую объект сообщения электронной почты в.
Вариант, о котором я не думал, когда задал вопрос: создайте свою собственную оболочку вокруг 'CakeEmail' со всеми необходимыми функциями. –