不能创建在CakePHP中

问题描述:

新动作尝试在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

,导致这个 “问题” 共同的东西:

  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,但作为一个经验法则,在进入恐慌之前总是检查所有编号的可能情况,并在圈子中运行,因为它没有工作:)任何不属于这些情况可能值得一个新的谷歌搜索和一个新的问题(如果其他问题/答案没有帮助)。