我正在將CakePHP站點從1.3升級到2.4,並且該站點發出了不少電子郵件。在原始版本中,我使用了舊的Cake電子郵件組件,並且使用控制器的set()
方法傳遞了必須打印在電子郵件中的所有變量。CakePHP 2.4 CakeEmail:如何訪問使用'set()'而不是'viewVars()'的變量集
// 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();
@Thorpe,感謝拼寫更正。 – Annabel
正確的代碼是:'$ Email-> viewVars(array('my_vars'=> $ my_vars,'someother'=> $ someother));'在'send()'之前' –