2017-10-13 6 views
0

からパラメータを渡す:私は、コントローラからミドルウェアまで$ additionalInfoを渡すことができますどのようにlaravel停止可能ミドルウェア、私は要求ロギング用の終端可能ミドルウェアを使用したいコントローラ

<?php 

namespace Illuminate\Session\Middleware; 

use Closure; 
use App\Helpers\Logger; 

class LogRequest 
{ 
    public function handle($request, Closure $next) 
    { 
     return $next($request); 
    } 

    public function terminate($request, $response) 
    { 
     Logger::log($request, $response, $additionalInfo) 
    } 
} 

を?

編集: 残念ながら、コントローラに追加情報が生成されます。

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); 
    } 

とコントローラで:LogRequestMiddlewareに

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

:私は、そのためのルートミドルウェア機能のないハードコード、それ

+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

関連する問題