2016-11-16 65 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在控制器方法名稱前加下劃線來嘗試。我的最後一個問題是當沒有模型的控制器時,應該在哪裏放置函數。謝謝 –

相關問題