如何将 laravel 4 过滤器迁移和转换为 laravel 5?
how to migrate and transform laravel 4 filters to laravel 5?
我想从 laravel 4 迁移到 laravel 5,laravel 5 中的过滤器概念似乎已更改。
我在 app/filters.php 文件中有以下过滤器(还有 auth、guest、csrf 过滤器):
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 class 的引导方法中添加过滤器。但是怎么办?你能帮帮我吗?
你应该看看 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);
}
我想从 laravel 4 迁移到 laravel 5,laravel 5 中的过滤器概念似乎已更改。
我在 app/filters.php 文件中有以下过滤器(还有 auth、guest、csrf 过滤器):
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 class 的引导方法中添加过滤器。但是怎么办?你能帮帮我吗?
你应该看看 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);
}