2013-11-25 71 views
0

我正在將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(); 
+0

@Thorpe,感謝拼寫更正。 – Annabel

+0

正確的代碼是:'$ Email-> viewVars(array('my_vars'=> $ my_vars,'someother'=> $ someother));'在'send()'之前' –

回答

0

您必須使用CakeEmail :: setVars()將數據傳遞給模板; 但你可以使用此獲得對象變量:

var_dump(get_object_vars($object)); 
0

其實我發現我可以解決我的問題,這行代碼:

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

之前,我從來沒有碰到過Controller::viewVars

相關問題