2017-02-05 12 views
0

私はlaravel 5にlaravel 4から移行したい、それがフィルターのコンセプトは5laravel 4フィルタをlaravel 5に移行して変換する方法は?

は、私は(ともAUTH、ゲスト、CSRFフィルター)アプリで/ filters.php以下のフィルタを持ってlaravelに変更されているようですファイル:

Route::filter('date_validation', function ($route, $request) { 
    $parameters = $route->parameters(); 
    if(array_key_exists('date', $parameters)) { 
     $date = $parameters["date"];    

     if(strtotime($date) > time() || strtotime($date) < strtotime('2014-01-01')) { 
      return Redirect::to('/'); 
     } 

    } 

    if(array_key_exists('time', $parameters)) { 
     $time = $parameters["time"]; 

     if($time > '23-59') { 
      return Redirect::to('/den'); 
     } 
    } 

}); 

私はそのように、このフィルタを使用してroutes.phpのファイルにいくつかのルートを定義している:

Route::group(array('before' => 'date_validation'), function() { 
    // some routes. 
}); 

しかし、今、私は私がミドルウェアを使用する必要があることを参照してください。私は、App \ Providers \ RouteServiceProvidersクラスの起動メソッドにフィルタを追加する必要があると思います。しかしどうですか?私たちを手伝ってくれますか?

答えて

2

Middlewareをご覧ください。

あなたのミドルウェアを作成します。 php artisan make:middleware DateValidation

はカーネルにそれを追加します。

public function handle($request, Closure $next) 
{ 
    $parameters = $request->route()->parameters(); 
    if(array_key_exists('date', $parameters)) { 
     $date = $parameters["date"];    

     if(strtotime($date) > time() || strtotime($date) < strtotime('2014-01-01')) { 
      return Redirect::to('/'); 
     } 

    } 

    if(array_key_exists('time', $parameters)) { 
     $time = $parameters["time"]; 

     if($time > '23-59') { 
      return Redirect::to('/den'); 
     } 
    } 

    return $next($request); 
} 
:あなたのミドルウェアで

// Within App\Http\Kernel Class... 

protected $routeMiddleware = [ 
    //... 
    'date_validation' => \App\Http\Middleware\DateValidation::class, 
]; 

をあなたのような何かを行うことができます

関連する問題