2013-09-26 2 views
4

라우트에 필터를 추가하고 컨트롤러에 컨트롤러를 전달하는 방법은?Laravel 4 : 라우트에 필터를 추가하여 컨트롤러에 전달하십시오.

는 Laravel의 문서에서 그들은이 같은 경로에 필터를 추가 할 수 있다고 말했다 :

Route::get('/', array('before' => 'auth', function() 
{ 
    return 'Not Authorized'; 
})); 

하지만이 같은 컨트롤러를 전달해야

Route::get('/', array('before' => 'auth', '[email protected]')); 

하지만이 얻을 오류가 발생하면 다음과 같이 처리하십시오.

call_user_func_array() expects parameter 1 to be a valid callback, no array or string given 

아이디어가 있으십니까?

답변

10

당신은 uses 키를 사용하여 컨트롤러 기능을 통과, 그래서 교체로

Route::get('/', array('before' => 'auth', '[email protected]')); 

,

Route::get('/', array('as' => 'home', 'before' => 'auth', 'uses' => '[email protected]')); 

을 그리고 로그인이 같은 auth 필터를 처리 할 수있는 경로가 있어야한다.

Route::get('login', function() 
{ 
    if(Auth::user()) { 
     return Redirect::to('/'); 
    } 

    return View::make('login'); 
}); 
+0

배열에서'as' 매개 변수를 사용할 수 있습니까? – arielcr

+0

예.이 키 값 쌍을 생략 할 수 있습니다. – devo

+0

@arielcr 업데이트 된 답변을 확인하십시오. – devo

5

문제에 대한 다른 해결책을 원합니다.

제 의견으로는 더 쉽게 읽을 수있는 이것을 사용할 수도 있습니다.

Route::get('/', '[email protected]')->before('auth'); 

이름이 지정된 경로가 필요한 경우 "as"및 "uses"만 사용해야합니다. Form 라우트의 경우.

관련 문제