2013-11-14 63 views
1

我想在我的CakePHP 2.3應用程序中使用會話。當我加入這個我的看法:方法SessionHelper :: write不存在錯誤

  $this->Session->write('key','value'); 

我收到以下錯誤:

Warning (512): Method SessionHelper::write does not exist [CORE\Cake\View\Helper.php, line 179] 

我已經嘗試添加這對我的控制器:

var $helpers = array('Html', 'Form', 'Js'=>array("Jquery"),"Session"); 
public $components = array('RequestHandler','Session'); 

但仍然出現錯誤。任何人都知道發生了什麼事?

感謝

回答

0

嘗試改變

var $helpers = array('Html', 'Form', 'Js'=>array("Jquery"),"Session"); 

public $helpers = array('Html', 'Form', 'Js'=>array("Jquery"),"Session"); 

另外,我建議做所有的會話寫作登錄控制器,而不是在視圖中。該視圖僅用於顯示事物。所以如果可以的話就避免它。

+0

如果您可以直接訪問會話數據,那麼您的建議是在控制器中設置會話變量並將其傳遞給視圖的原因是什麼?只是好奇...... –

+0

蛋糕遵循MVC模式(有些人可能會說它沒有),所以視圖只是爲了顯示信息,一個好的MVC模式不會在視圖中創建任何變量/邏輯函數,控制器應該處理這個。你可以,因爲API可以讓你,但是我覺得如果可能的話,嘗試儘量接近mvc模式是一個很好的習慣。至少,在控制器中設置變量的「寫入」,並在視圖中執行'$ this-> Session-> read('var')'。 – Nunser

+0

gotcha!多數民衆贊成我的觀點雖然..如果你可以通過$ this-> Session->直接從視圖中讀取('var'),應該沒有任何理由在控制器中設置它。除非你想在助手中使用該變量,並且擔心會話狀態可能會隨着進程等而改變 –

1

documentation

The major difference between the Session Helper and the Session Component is that the helper does not have the ability to write to the session.

,因此沒有可用的write()方法在SessionHelper(你也可以看到API)。

相關問題