2014-06-09 2 views
0

나는 모든 요청 URI를 처리하는 가장 좋은 장소는 무엇인지 알고 싶습니다. 예 :이 파라미터는 동적 파라미터로 laravel는 단일 장소에서 uri를 요청합니다.

www.abc.com/event1/vote 
www.abc.com/event2/vote 

이제 위의 예에서, I는 URL의 두번째 파라미터 (추천합니다 Event1, event2 등)에 기초하여 다른 비즈니스 로직을 처리 할. 나는 컨트롤러에서 before_filter를 사용할 수 있다는 것을 알고 있지만 컨트롤러 실행 전에 한 곳에서 내 논리를 실행하려고합니다. 내가 각 컨트롤러에 before_filter를 작성하고 싶지 않아.

App::before(function($request) { 
    // dd($request->all()); // All inputs 
    // dd($request->input()); // All inputs 
    // dd($request->segments()); // All segments as an array 
    // dd($request->segment(1)); // event1 
    // dd($request->url()); // www.abc.com/event2/vote 
}); 

이 방법을 시도하고 한 번에 각 주석 라인을 확인하고 당신은 얻을 것이다 :

+0

왜 모든 파일을 경로 파일의 그룹에 넣고 그룹 필터에서 논리를 실행하지 않습니까? – itachi

답변

1

당신은 어떤 전에 모든 요청에 ​​발사하는 글로벌 before 이벤트를 사용할 수는/모든 경로가 처리됩니다 생각. Laravel 웹 사이트의 Application Events에 대한 자세한 내용을 확인하십시오.

event에서는 $request으로 Request 개체에 액세스 할 수 있으며, 그래서 당신이 결정을 내릴 수있는 URI의 부분에 따라 많은 방법으로 URI의 부분을 추출 할 수 있습니다.

// www.abc.com/event2/vote 
$event = $request->segment(1); // event2 
if($event == 'event2') { ... } 

당신은 당신의 filters.php 파일에서이 이벤트를 선언 할 수있다 : 예를 들어, 당신은 같은 것을 할 수 1 세그먼트를 얻을 수 있습니다.

+0

감사 WereWolf - 알파! 그것은 나를 위해 작동합니다. 그러나, 내가 어떻게 컨트롤러의 메서드를 호출 할 수 있는지 알고 싶습니다. 실제로, 나는 (예를 들어, 컨트롤러에서 선호하는) 약간의 논리를 작성해야한다. 왜냐하면 나의 예제 event1 또는 event2는 이벤트의 이름이 될 것이고 나는 데이터베이스에서 ID를 가져와야하기 때문이다. 따라서, 나는 데이터베이스/모델 등등에 액세스 할 수있는 논리를 작성하고 싶습니다. 그러나 app ​​/ filters.php에서 데이터베이스에 액세스 할 수 있는지 확실하지 않습니다. – neeraj

+0

컨트롤러의 메소드를 호출하려면'App :: make ('controllerName') -> methodName ($ parameters)'를 사용할 수 있습니다. –