2010-10-07 55 views
0

我在用戶控制器中有一個編輯操作。如果他們的Auth.User.id不等於他們嘗試編輯的用戶的ID,我想要做的是將任何人重定向到不同的操作。CakePHP:從控制器內訪問會話數據

我可以訪問的變量在我的看法是這樣的:

if($session->read('Auth.User.id') != $id){ 

但是這並不在我的控制器工作。正在獲取:

Undefined variable: session 

如何訪問控制器內的會話數據?此外,如果有更好的方式來實現我想要做的事情,請隨時添加!

感謝,

Jonesy

+1

只是一個友好的提醒,試圖在控制器中儘可能多的邏輯。 CakePHP的編碼慣例越多,你越感謝以後。 ;)請隨時在http://book.cakephp.org/view/901/CakePHP-Conventions上詳細介紹一下它們的快樂烘焙! – 2010-10-07 22:11:32

回答

8

必須先添加會議在你的控制器組件:

var $components= array('Session');

然後,您可以通過$this->Session

+0

+1表示一般正確性,但他應該將Session作爲組件添加,而不是幫助程序。 (儘管通常都是) – Stephen 2010-10-07 21:52:12

+0

謝謝,斯蒂芬。我混淆了組件和助手。我編輯過。 – webbiedave 2010-10-07 22:01:25

4

訪問它在你的方法您可以使用$this->Session->read('Auth.User.id');來閱讀控制器中的會話數據CakePHP Sess如果我沒有記錯的話,離子成分會自動加載到所有的控制器中,除非您在其他地方定義了默認組件。如果$this->Session未定義,請將其包含到您的控制器中的$components陣列中,如var $components = array('Session');

請務必注意,助手與組件不同。一般來說,組件是控制器的擴展功能。鑑於助手是您的視圖的擴展功能。

爲了全面瞭解所有可能的方法,CakePHP Cookbook將爲您帶來無法估量的價值! http://book.cakephp.org/view/1310/Sessions