2017-10-13 7 views
0
내가 요청 로깅을위한 기한이있는 미들웨어를 사용하려는

에서 매개 변수를 전달?laravel 기한이있는 미들웨어, 컨트롤러

편집 : 불행히도 추가 정보는 컨트롤러에서 생성됩니다.

protected $routeMiddleware = [ 
     ...... 
     'LogRequest'=> \App\Http\Middleware\LogRequest::class 
    ]; 

LogRequestMiddleware에 :

public function handle($request, Closure $next, $additionalInfo) 
     { 
      //here you have $additionalInfo 
      $request->attributes->add(["info" => $additionalInfo]); 
      return $next($request); 
     } 
    public function terminate($request, $response) 
    { 
     dd($request->attributes); 
    } 

그리고 컨트롤러를

+0

내 대답을 편집 할 수 있습니다. – LorenzoBerti

답변

0

당신이 kernel.php에 추가 보라고 경로 미들웨어 기능의 그러므로 나는 할 수 어렵지 않다 코드를 :

public function __construct() 
    { 
     $additionalInfo = "test" 
     $this->middleware("LogRequest:$additionalInfo"); 
    } 
+0

불행하게도이 방법은 핸들 메서드가 아니라 종료 메서드에서 매개 변수가 필요하므로 작동하지 않습니다. – Chris

+0

당신이 할 수있는 방법에 대한 내 대답을 편집했습니다 – LorenzoBerti

0

편집 :이

컨트롤러

$request->attributes->add(['additionalInfo' => 'additionalInfoValue']); 

미들웨어

public function terminate($request, $response) 
{ 
    $additionalInfo = $request->attributes('additionalInfo' => $additionalInfo); 
    Logger::log($request, $response, $additionalInfo) 
} 
+0

그는 라우팅에서 컨트롤러가 아닌 미들웨어를 전달할 것입니다 – LorenzoBerti

+0

불행히도 추가 정보는 컨트롤러에서 생성됩니다. 따라서 경로 미들웨어 기능에서 하드 코드를 작성할 수는 없습니다. – Chris

관련 문제