无法在CakePHP中创建新操作

无法在CakePHP中创建新操作,cakephp,cakephp-2.3,Cakephp,Cakephp 2.3,尝试在TasksController.php中添加新操作,如下所示 public function magic(){ debug("hi"); exit; } 然后加载页面,但它会重定向到 我已经检查了router.php,并且没有定义任何魔法。我还把动作名称改成了“魔法”,我的动作等等,但是运气不好,它们都被重定向到了主页上 有什么想法吗 导致此问题的常见原因: 对操作使用私有或受保护的可见性。url可以访问的所有操作都应该是公共的 坠入地狱。您需要检查操作是否使用了预期的路由。

尝试在TasksController.php中添加新操作,如下所示

public function magic(){
   debug("hi");
   exit;
}
然后加载页面,但它会重定向到

我已经检查了router.php,并且没有定义任何魔法。我还把动作名称改成了“魔法”,我的动作等等,但是运气不好,它们都被重定向到了主页上


有什么想法吗

导致此问题的常见原因:

对操作使用私有或受保护的可见性。url可以访问的所有操作都应该是公共的

坠入地狱。您需要检查操作是否使用了预期的路由。正如Dave所说,您可以根据请求使用DebugKit检查此项

你正在验证某个东西,它没有通过验证并将你重定向到其他地方,但你绝对发誓id已经设置好了,所以真的要先检查一下

public function index($id=null) {
   if (!$this->Model->exists($id))
      $this->redirect(/*somewhere*/);
您正在使用某种ACL和权限树,或者在添加新操作后未更新的任何内容。如果您将函数设置为私有,然后在不更新的情况下将其更改为公共,则也会出现此错误

这些是导致此操作问题的常见问题


显然这里的问题是ACL,但根据经验,在陷入恐慌之前,一定要检查所有编号的可能场景,并绕圈运行,因为它不起作用:任何不属于这些场景的错误都可能需要新的谷歌搜索和新的问题,如果其他问题/答案没有帮助。

查看DebugKit中的“请求->当前路由”下的“调试包”,查看它使用的路由。如果它如预期的那样,只是回应一些东西;出口从AppController的beforeFilter开始,看看您能在多大程度上找到问题发生的位置。您是否有ACL,如果有,您是否授予访问新操作的权限?谢谢Nunser!一定是这样。我想我需要重新生成ACL。Nunser,既然你在评论中发布了你的答案,我怎么能接受你的答案?谢谢我会发布一个答案和解决方案,因为它可能会帮助其他人,给我几分钟