2013-02-14 73 views
-1

我正在CakePHP 1.3中開發一個應用程序。一切工作正常,但有一個錯誤。 當我在.ctp頁面使用redirect()它給了錯誤,當我在控制器使用致命錯誤:調用未定義的方法View :: redirect()cakephp

Fatal error: Call to undefined method DebugView::redirect() 

由於重定向工作正常。 我已經包含助手在我的AppController如下

var $helpers = array('Html', 'Form','Session'); 

請幫助 在此先感謝

回答

2

你永遠不重定向(或輸出如果可能的話任何頭)在視圖層。 使用控制器來完成。 然後視圖應該只根據所需的輸出格式(html,xml,json,...)呈現輸出。頭文件是控制器的響應和責任的一部分(在2.x響應類本身中)。

所以你的觀察,它將與控制器,而不是內部視圖是正確的。 「調用未定義的方法」始終是一個很好的指示器,可用於此範圍內的方法不可用。 重定向是「邏輯」的一部分,使得它們僅在控制器和組件中可用。從來沒有在視圖中(輸出所有邏輯發生後)。

+0

然後我應該使用什麼備用。 PHP頭? – 2013-02-14 11:56:04

+2

沒有備用。糾正錯誤的代碼,只使用控制器和/或組件中的重定向()。如果你覺得有必要在你看來這樣做,那你就錯了,需要重構你的代碼。 – mark 2013-02-14 12:00:12

+0

我正在從數據庫中獲取數據,然後使用foreach在視圖中從數組中提取值。然後將特定字段與另一個字段進行比較,然後如果成功停留在其他頁面上,則重定向。我想我的代碼沒有錯誤,但根據我需要的情況! – 2013-02-14 12:06:27

0

在你的控制器:

$this->redirect('url, absolute or relative here'); 

完成。

相關問題