2016-12-05 15 views
8

ミドルウェアを指すルートがあるとします。次のようにLaravelのミドルウェアへのパラメータの受け渡し

Route::get("/user/{id}", ['middleware' => 'auth', function ($id) { 

}]); 

そして、私のミドルウェア・コードは次のとおりです。

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

私はミドルウェアで$idを使用したい場合は、私はそれをどのように行うのですか?

+3

あなたは '$ request'変数を使っています:)(' $ request-> id') – Kyslik

答えて

7

あなたはミドルウェアでルートパラメータにアクセスするには、次の方法のいずれかを使用できます。

まずメソッド

$request->route()->parameters();

このメソッドは、すべてのパラメータの配列を返します。

第二の方法は、ここでparameter_name

$request->route('parameter_name');

は、あなたがルート内のパラメータと呼んだものを指します。

4

場合によっては、$idをミドルウェアに渡すことはできません。

Route::get('user/{id}', ['middleware' => 'auth:owner', function ($id) { 
    // Your logic here... 
}]); 

そして、このようなミドルウェアメソッドに渡されたパラメータを取得:

一般的に、あなたは、このよう:記号を使用して経由ミドルウェアパラメータを渡すことができ

<?php 

namespace App\Http\Middleware; 

use Closure; 

class Authentication 
{ 
    public function handle($request, Closure $next, $role) 
    { 
     if (auth()->check() && auth()->user()->hasRole($role)) { 
      return $next($request); 
     } 

     return redirect('login'); 
    } 
} 

注意をそのhandle()方法通常、$requestと と$next closureをとり、third parameterを持ちます。これは、i私たちのミドルウェア パラメータ。あなたはルート定義であなたのミドルウェア コールに複数のパラメータに渡された場合は、ちょうどあなたの ハンドル()メソッド

に多くのパラメータを追加し、この情報がお役に立てば幸い!

関連する問題