2014-09-29 82 views
0

新動作嘗試在TasksController.php添加一個新的行動不能創建在CakePHP中

public function magic(){ 
    debug("hi"); 
    exit; 
} 

然後加載http://example.com/tasks/magic的頁面,但它重定向到http://example.com

我已經檢查過router.php,無論如何也沒有定義「魔術」。而且我還將動作名稱更改爲「神奇」,「myaction」等,但沒有運氣,他們都被重定向到主頁。

有什麼想法?

+0

在「請求」 - >當前路由下的DebugKit中查找它正在使用的路由。如果如預期的那樣,只是「回聲」一些東西「;退出;'從你的AppController的beforeFilter()開始,看看你能找到問題發生的地方。 – Dave 2014-09-29 16:13:17

+0

您是否有ACL?如果是,您是否允許訪問您的新操作? – Nunser 2014-09-29 16:13:41

+0

感謝Nunser!它一定是那個。我想我需要重新生成ACL。 – 2014-09-29 16:16:05

回答

0

,導致這個 「問題」 共同的東西:

  1. 使用上的動作privateprotected知名度。所有可以通過url訪問的操作應該是public

  2. 陷入「路由地獄」。您需要檢查該動作是否使用了預期的路線。就像Dave說的,你可以在Request下使用DebugKit檢查它。

  3. 您要驗證的東西,它沒有通過驗證並重定向你到別的地方(但你絕對發誓ID設置(所以真的真的檢查第一))

    public function index($id=null) { 
        if (!$this->Model->exists($id)) 
         $this->redirect(/*somewhere*/); 
    
  4. 您使用的是一些在添加新操作後,ACL的種類和權限樹(或任何它)沒有更新。如果你的功能private,然後更改爲public而不更新,它也會給你這個錯誤。

這些是導致操作出現此問題的常見問題。

顯然這裏的問題是ACL,但作爲一個經驗法則,在進入恐慌之前總是檢查所有編號的可能情況,並在圈子中運行,因爲它沒有工作:)任何不屬於這些情況可能值得一個新的谷歌搜索和一個新的問題(如果其他問題/答案沒有幫助)。