2017-02-05 5 views
0

Я хочу перейти от Laravel 4 до Laravel 5, и, кажется, концепция фильтра была изменена в Laravel 5.Как перенести и преобразовать laravel 4 фильтра в laravel 5?

У меня есть фильтр ниже (а также AUTH, гостевой, CSRF фильтры) в приложении/filters.php файл:

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

Добавьте его в ядро:

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

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

В вашем промежуточном слое вы могли бы сделать что-то вроде:

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

 Смежные вопросы

  • Нет связанных вопросов^_^