Cakephp 3.我需要通过URL进行无法访问的控制器操作

时间:2016-11-16 00:51:40

标签: cakephp action visibility cakephp-3.x

我的控制器中有两个公共操作。出于安全原因,我需要将delete()设置为无法访问URL。

  • 操作delete()应该是公共的,因此可以从其他控制器访问。
  • 我认为Authentication,Routing或Csrf是非常不切实际的解决方案。
  • 我没有在CakePhp3 cookbook的控制器,请求和名称约定中找到解决方案。


    class CommentsController extends AppController
    {
        public function add (){
           //logic to add here
        }
        public function delete ($id = null){     
          //logic to delete here
        }
    }

我希望有所帮助。感谢。

1 个答案:

答案 0 :(得分:1)

我不认为在另一个控制器中使用动作是个好主意。

如果你要做一些逻辑,那么放置它的正确位置就是模型。

所以你要在CommentsTable中删除代码

class CommentsTable extends Table
{
    public function delete ($id = null){     
        //logic to delete here
    }
}

所以当你在另一个控制器中时,你可以做到

class ItemsController extends AppController
{

    public function doSomething () {
        $this->loadModel('Comments');
        $this->Comments->delete(42);
    }
 }