无法在CakePHP中创建新操作

时间:2014-09-29 16:09:30

标签: cakephp cakephp-2.3

尝试在TasksController.php中添加一个新动作

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

然后加载页面http://example.com/tasks/magic,但它会重定向到http://example.com

我已经检查过router.php,无论如何都没有定义“魔法”。我还将动作名称改为“魔法”,“神秘动作”等,但没有运气,它们都被重定向到主页。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

导致这个“问题”的常见问题:

  1. 对操作使用privateprotected可见性。网址可以访问的所有操作都应该是public

  2. 陷入“路由地狱”。您需要检查操作是否正在使用预期路线。就像Dave说的那样,你可以在Request。下找到DebugKit。

  3. 您正在验证某些内容,但它未通过验证并将您重定向到其他位置(但您绝对发誓ID已设置(所以真的要先检查))

    public function index($id=null) {
       if (!$this->Model->exists($id))
          $this->redirect(/*somewhere*/);
    
  4. 您正在使用某种ACL,并且在添加新操作后未更新权限树(或其他任何树)。如果您将功能设为private,然后将其更改为public而不进行更新,则也会出现此错误。

  5. 这些是通过操作导致此问题的常见问题。

    显然这里的问题是ACL,但根据经验,总是检查所有编号的可能情况,然后进入恐慌并绕圈运行,因为它不起作用:)任何错误都不属于这些场景可能值得一个新的谷歌搜索和一个新的问题(如果其他问题/答案没有帮助)。