2016-11-16 68 views
0

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

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


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

我希望帮助。谢谢。

回答

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); 
    } 
} 
+0

大。 delete()动作现在可以通过URL访问,我也可以从控制器访问它。谢谢 –

+0

在你的帮助之前,我想通过根据cookbook 2.x在控制器方法名称前加下划线来尝试。我的最后一个问题是当没有模型的控制器时,应该在哪里放置函数。谢谢 –

相关问题