2017-04-27 4 views
0

データをサーバーに送信するために使用しているルートがあります。私は掲示されたデータを取得し、それをdbに記録したい。私はハンドル機能にLaravelミドルウェアはルート投稿データとカスタムルートキーと値のペアを取得します

public function handle($request, Closure $next) { 
     echo "...intercept post data"; 
     return $next($request); 
    } 

第二のフォームポストデータを取得することができ、私は、例えばこのルート、私はミドルウェアからアクセスできるカスタムキー値を追加したい

Route::get('role',[ 
    'middleware' => 'Role:editor', 
    'uses' => '[email protected]', 
]); 

を持っていますすなわち

私はlaravel 5と
で、これが可能なキー deed .Isを追加上記の経路では
Route::get('role',[ 
    'middleware' => 'Role:editor', 
    'uses' => '[email protected]', 
    'deed' => 'Viewed registered users' 
]); 

iはmiddlewでそれにアクセスすることができますありますか?

答えて

-1

はい、ミドルウェアからRouteパラメータを取得できます。あなたはこのように「ルートオブジェクトに一致」を取得することができ、あなたのミドルウェアで

class MyMiddleware 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     $matchedRouteObject = $request->route(); 
     $next($request); 
    } 
} 

print_r($request->route())を参照してください。このルートオブジェクトにactionをという名前のプロパティがあります。 actionプロパティには、一致するRouteのすべてのパラメータがあります。

Route::get('/', [ 
    'uses' => '[email protected]', 
    'middleware' => 'App\Http\Middleware\MyMiddleware', 
    'deed' => 'View registered users' 
]); 

アプリ/ HTTP /ミドルウェア/ MyMiddleware.php:

は、あなたが "MyMiddleware" という名前のミドルウェアと

ルート/ web.php "MyController" という名前のコントローラを持っていると仮定します

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Http\Response; 

class MyMiddleware 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     $matchedRouteObject = $this->route(); 
     $deedVariable = $mathedRouteObject->action['deed']; // here you got your variable. 
     return $next($request); 
    } 
} 
-1

いいえできないことはできません。唯一のミドルウェアを使用してeditorはミドルウェアで$requestパラメータから、パラメータ

public function handle($request, Closure $next, $editor) 

あなたはまた、ルートINFOMATION名、メソッドの種類にアクセスすることができますここであなたがRole:editorで行うようにパラメータを渡します。

ミドルウェアを使用しているすべてのルートからのすべての要求に対して、プロダクションに最適な方法ではないクエリが発生することに注意してください。ミドルウェアからイベントを発生させ、イベントリスナーに残りの処理(クエリの挿入など)をさせてください。

関連する問題