2017-12-01 3 views
0

동일한 컨트롤러에서 하나의 경로로 여러 기능을 실행할 수 있습니까? 이런 식으로 생각했지만 작동하지 않습니다.Laravel은 동일한 컨트롤러에서 여러 기능을 실행합니다

  • GetData의
  • getData1
  • getData2

아니면 쉬운 방법이있다 : 컨트롤러에서

Route::get('getdata','[email protected]', '[email protected]', '[email protected]'); 

는 이러한 기능입니까?

+0

첫 번째 방법으로 다른 방법을 호출 할 수없는 이유는 무엇입니까? 아니요, 라우터는 특정 동작에 대한 경로를 지정합니다. – lagbox

+0

다른 모든 메서드를 호출하는 메서드를 만듭니다. 경로에 main 메소드를 지정하십시오. – Marc

답변

3

컨트롤러에서

다음과 같이 추가하십시오.

class YourController extends Controller { 
    //... 

    protected function getAllData() { 
     //Executes the seperate functions. 
     $this->getData(); 
     $this->getData1(); 
     $this->getData2(); 
    } 

    //... 
} 

이것은 각각 기능을 실행합니다.

그러면 경로에서 컨트롤러의 기능으로 [email protected]을 호출하기 만하면됩니다.

+0

함수는 Excel에서 활동을 작성하며 그 것입니다. 아무것도 반환하지 않습니다. 함수는 호출 할 때 한 번 실행하면됩니다. – Marc

+0

@Marc 지금 예제를 확인하십시오. 반환 할 때 계산하지 않고 모든 함수를 호출합니다. 그러나 나는 당신에게 성공/실패 상태를 돌려주는 것뿐만 아니라 추가적인 점검을 할 것을 조언 할 것이다. – Classified

0

여러 컨트롤러 동작이 단일 경로를 담당하는 경우에는 의미가 없습니다. 그것은 MVC가 작동하는 방식이 아닙니다. 각 경로에 대해 하나의 조치 만 있어야하며 해당 조치 내에서 필요한 모든 다른 기능을 호출해야합니다.

베스트 프랙티스의 경우 컨트롤러의 각 메소드에는 비즈니스 로직이 아닌 요청에 응답하는 코드 만 있어야하며 호출해야하는 다른 기능이 있으면 다른 클래스 (레이어).

class MyController extends Controller { 

    public function myAction(MyService $myService) { 
     $myService->getData(); 

     // not $this->getData() 
    } 
}