cakephp2.4cakeemail:如何使用';set()';而不是';viewVars()';

cakephp2.4cakeemail:如何使用';set()';而不是';viewVars()';,email,cakephp,Email,Cakephp,我正在将一个CakePHP站点从1.3升级到2.4,该站点发送了很多电子邮件。在最初的版本中,我使用的是旧的Cake电子邮件组件,所有必须在电子邮件中打印出来的变量都是使用控制器的set()方法传递的 // code in controller $this->set('my_var', 'whatever); 在新版本中,我使用的是略有不同的CakeEmail类。其中一个区别是,电子邮件模板无法再“查看”这些变量 // code in View/Email template // wor

我正在将一个CakePHP站点从1.3升级到2.4,该站点发送了很多电子邮件。在最初的版本中,我使用的是旧的Cake电子邮件组件,所有必须在电子邮件中打印出来的变量都是使用控制器的
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();

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

var_dump(get_object_vars($object));

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

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

我以前从未遇到过
Controller::viewVars

@Thorpe,谢谢你的拼写更正。正确的代码是:
$Email->viewVars(数组('my_vars'=>$my_vars,'someother'=>$someother))就在
send()之前