2016-11-16 10 views
0

컨트롤러에 두 개의 공용 작업이 있습니다. 보안상의 이유로 URL에 액세스 할 수 없도록 delete()를 설정해야합니다.Cakephp 3. URL로 액세스 할 수있는 컨트롤러 작업이 필요합니다.

  • delete() 작업은 public이어야하므로 다른 컨트롤러에서 액세스 할 수 있어야합니다.
  • 인증, 라우팅 또는 Csrf는 매우 비실용적 솔루션이라고 생각합니다.
  • CakePhp3 요리 책에서 컨트롤러, 요청 또는 이름 규칙에 대한 해결책을 찾지 못했습니다.


    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

도움을 청하기 전, 나는 컨트롤러 메소드 이름의 접두사에 밑줄을 긋고 요리 책 2.x에 따라 시도했습니다. 내 마지막 질문은 모델이없는 컨트롤러가있을 때 함수를 넣을 위치입니다. 감사 –