我正在将CakePHP网站从1.3升级到2.4,该网站发送了不少电子邮件。在原始版本中,我使用旧的Cake Email Component,并且使用控制器的set()
方法传递了必须在电子邮件中打印的所有变量。
// code in controller
$this->set('my_var', 'whatever);
在新版本中,我使用的CakeEmail
类略有不同。其中一个不同之处在于电子邮件的模板无法再“看到”这些变量。
// code in View/Email template
// works in 1.3 BUT NOT 2.4
echo $my_var;
问题1:如何更改我的视图/模板代码以访问$my_var
?
我知道我可以使用CakeEmail::setVars()
将变量传递给视图/模板但是我想避免这种情况,因为我的代码结构会使这有点复杂(许多嵌套函数)。
或者,如何在发送电子邮件之前使用set()
获取所有变量集的数组来传递viewVars()
?
// How to do this in controller
$my_vars = $this->???? // return array of all vars set so far
$Email->viewVars($my_vars);
$Email->send();
答案 0 :(得分:0)
您必须使用CakeEmail :: setVars()将数据传递给模板; 但你可以用这个来获取对象变量:
var_dump(get_object_vars($object));
答案 1 :(得分:0)
实际上我发现用这行代码可以解决我的问题:
// in controller code
$Email->viewVars($this->viewVars);
我之前从未见过Controller::viewVars
。