CakePHP 2.4 CakeEmail:如何使用'set()'代替'viewVars()'来访问变量集

时间:2013-11-25 12:23:01

标签: email cakephp

我正在将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();

2 个答案:

答案 0 :(得分:0)

您必须使用CakeEmail :: setVars()将数据传递给模板; 但你可以用这个来获取对象变量:

var_dump(get_object_vars($object));

答案 1 :(得分:0)

实际上我发现用这行代码可以解决我的问题:

// in controller code
$Email->viewVars($this->viewVars);

我之前从未见过Controller::viewVars