2014-08-27 1 views
0

내 Laravel 프로젝트 용 API를 작성 중입니다. 내 API 인증을 route.php 파일에 직접 포함 시켰습니다. 유효성 검사가 끝나면 my $ api 매개 변수를 컨트롤러 자체에 전달하여 사용할 수 있기를 원합니다. 아래에서 볼 수 있듯이 Route : post 호출 후에 with()를 추가했지만 실패했습니다. 내 컨트롤에 $ api를 어떻게 전달할 수 있습니까?라우트 매개 변수를 라우트에서 컨트롤러로 전달합니다.

미리 감사드립니다.

Route::group(array('prefix' => 'api/1.0.0'), function() 
{ 
    $api = Api::checkCredentials(Input::get('username'), Input::get('api_key')); 

    if($api) 
    { 
     Route::post('beacons/fetch', '[email protected]')->with('api', $api); 
    } 
    else 
    { 
     return Response::json(array(
      'error' => true, 
      'output' => 'Invalid API credentials'), 
      200 
     ); 
    } 
}); 

답변

0

당신은 예를 들어, before 필터를 사용할 수 있습니다 :

Route::group(array('prefix' => 'api/1.0.0'), function() 
{ 
    Route::post(
     'beacons/fetch', 
     array('before' => 'checkUser', 'uses' => '[email protected]') 
    ); 
}); 

가 전달되는 route 전에 실행됩니다 checkUser 필터 선언 : 그래서 지금

Route::filter('checkUser', function($route, $request) { 

    $inputs = Input::only(array('username', 'api_key')); 

    $api = app('Api')->checkCredentials($inputs); 

    if(!$api) { 

     return Response::json(array(
      'error' => true, 
      'output' => 'Invalid API credentials'), 
      200 
     ); 
    } 
    else { 
     Input::merge(array('api' => $api)); 
    } 
}); 

을, 당신은에 액세스 할 수 있습니다 이 번호를 사용하는 컨트롤러의 api :

$api = Input::get('api'); 
+0

그러면 ApiController @ fetchBeacons 컨트롤러에서 $ api를 입력하면 $ api 매개 변수에 액세스 할 수 있습니까? – ChrisSmith

+0

업데이트 된 답변 인'Input :: merge (array ('api'=> $ api));'를 확인하십시오. –

+0

답변을 업데이트했습니다. 지금 확인하십시오. –