2017-12-03 14 views
0

私はlaravelを学んでいます。今はミドルウェアのものに悩まされています。私は、クラスAdultMiddleware.phpありますLaravelでのチェック時代ミドルウェアの使用

<?php 
namespace App\Http\Middleware; 

use Closure; 

class AdultMiddleware 
{ 

    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
    if (Session::get('age') < 18) { 
     return view('search'); 
    } 

    return $next($request); 
    } 
} 

をし、それがKernel.phpで短い名前です:あなたは、私が設定されたルートで見たよう

Route::get('middle', array('as' => 'middle', 'age' => '16', 'before' => 'adult', function() 
{ 
    return view('welcome'); 
})); 

protected $routeMiddleware = [ 
     'adult' => \App\Http\Middleware\AdultMiddleware::class, 
]; 

そしてweb.phpで年齢は16歳ですが、検索の代わりに歓迎を返します。私は間違っているの?初心者に聞こえるかもしれませんが、私はGoogleにしようとしましたが運がなかったのです。だから私はここで尋ねている。

答えて

2

ルートにミドルウェアを割り当てる:

Route::get(..., ['middleware' => 'adult', ...]); 

Route::get(..., ...)->middleware('adult'); 

before

は、ミドルウェア置き換えフィルター以来Laravelにこれ以上存在しないフィルターです。

Laravel Docs - 5.5 - Middleware - Assigning Middleware to routes

Laravel Docs - 5.2 - Middleware - Assigning Middleware to routes

Route::get('middle', ['as' => 'middle', 'middleware' => 'adult', function() { 
    return view('welcome'); 
}]); 
あなたのミドルウェアはセッション変数をチェックするために起こっている場合は、あなたが好きなようにそのセッション変数を設定することができるようにルートを追加することができます。セッションで age変数を設定し、あなたの「真ん中」ルートにリダイレクトされます

Route::get('set/age/{age}', function ($age) { 
    session(['age' => $age]); 

    return redirect()->route('middle'); 
}); 

ミドルウェアからビューを返す代わりに、検索ページにリダイレクトすることもできます。

+0

はい、これはうまくいきましたが、クラス 'App \ Http \ Middleware \ Session'が見つかりませんでした。年齢とともに可変年齢を設定したいのでミドルウェアが動作しているかどうかをテストできます。テスト目的のためだけです – PhpNewbie

+1

あなたのクラス名の上にSessionをインポートしてください。 'セッションを使う;' –