Laravel从4.2升级到5.我如何让过滤器工作


Upgrading Laravel from 4.2 to 5. How do I get a filter to work?

我在我的Laravel 4.2应用程序的filters.php中有一个方法,看起来像这样:

    // Clean/self-updating URLs for property
    Route::filter('property-slug', function($route, $req)
    {
        $listing = $route->parameter('listing');
        if ($route->parameter('metainfo') != $listing->metainfo) {
            return Redirect::route('listing.full', [$listing->MLSNumber, $listing->metainfo]);
        }
    });

所有这一切都允许我输入mydomain.com/property/21938281(或一些MLS号码),它重定向到有地址段符的漂亮URL(例如mydomain.com/property/21938281-123-main-street

)

我现在把新的过滤器放在哪里?我看到之前和之后都有中间件,但我不确定如何让这个特定的工作,因为它不适合之前或之后。

创建中间件:

php artisan make:middleware AdminMiddleware

根据你的需要修改

打开app/Http/Kernel.php,添加如下内容:

protected $routeMiddleware = [
    'auth' => 'App'Http'Middleware'Authenticate::class,
    'auth.basic' => 'Illuminate'Auth'Middleware'AuthenticateWithBasicAuth::class,
    'guest' => 'App'Http'Middleware'RedirectIfAuthenticated::class,
    'admin' => 'App'Http'Middleware'AdminMiddleware::class
];

routes.php中的使用:

Route::get('admin/accounts', ['middleware' => 'admin', function () {
    //
}]);

几天前我不得不从过滤器转移到中间件,因为它们在5.1中被弃用了。