2016-11-16 4 views
0

コントローラ内に2つのパブリックアクションがあります。セキュリティ上の理由から、URLでアクセスできないdelete()を設定する必要があります。Cakephp 3. URLでアクセス可能なコントローラアクションが必要です

  • delete()アクションは、他のコントローラからアクセスできるようにpublicにする必要があります。
  • 認証、ルーティングまたはCsrfは非常に実用的ではないソリューションだと思います。
  • CakePhp3 cookbookのコントローラ、リクエスト、名前の規約で解決策が見つかりませんでした。


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

私は助けを願っています。ありがとう。

答えて

1

他のコントローラ内のアクションを使用することはお勧めできません。

ロジックを実行する場合は、適切な場所に配置するとモデルになります。

だから、あなたが別のコントローラにある場合ので、あなたは偉大な

class ItemsController extends AppController 
{ 

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

を行うことができますが、CommentsTable

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

内のコードを削除して置きます。 delete()アクションはURLでアクセス可能になりました。コントローラからもアクセスできます。ありがとうございました –

+0

あなたの助けになる前に、私はcookbook 2.xに従ってコントローラメソッド名の先頭にアンダースコアを付けることで試していました。私の最後の質問は、モデルのないコントローラがあるときにどこに関数を置くかです。ありがとう –

関連する問題