繁体   English   中英

Laravel 5.1将中间件添加到资源路由

[英]Laravel 5.1 adding middleware to resource route

因此我一直在尝试将中间件与我的路由资源一起使用,但使它无法正常工作。

这是我的路线设置:

Route::group(['prefix' => 'api','middleware' => 'locationRouteValidator'], function()
{
    Route::resource('location', 'LocationController');
});

和路由似乎已正确设置:

 php artisan route:list +--------+----------+------------------------------+----------------------+-------------------------------------------------+------------------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+------------------------------+----------------------+-------------------------------------------------+------------------------+ | | GET|HEAD | / | | Closure | | | | GET|HEAD | api/location | api.location.index | App\\Http\\Controllers\\LocationController@index | locationRouteValidator | | | POST | api/location | api.location.store | App\\Http\\Controllers\\LocationController@store | locationRouteValidator | | | GET|HEAD | api/location/create | api.location.create | App\\Http\\Controllers\\LocationController@create | locationRouteValidator | | | DELETE | api/location/{location} | api.location.destroy | App\\Http\\Controllers\\LocationController@destroy | locationRouteValidator | | | PATCH | api/location/{location} | | App\\Http\\Controllers\\LocationController@update | locationRouteValidator | | | GET|HEAD | api/location/{location} | api.location.show | App\\Http\\Controllers\\LocationController@show | locationRouteValidator | | | PUT | api/location/{location} | api.location.update | App\\Http\\Controllers\\LocationController@update | locationRouteValidator | | | GET|HEAD | api/location/{location}/edit | api.location.edit | App\\Http\\Controllers\\LocationController@edit | locationRouteValidator | +--------+----------+------------------------------+----------------------+-------------------------------------------------+------------------------+ 

所以现在我创建中间件:

php artisan make:middleware locationRouteValidator

并保留默认代码:

public function handle($request, Closure $next)
{
    return $next($request);
}

只是为了测试,在控制器的show方法中,我像这样回显了传递的id:

public function show($id)
{
    //
    echo "show ".$id;
}

所以现在我希望当我访问/public/api/location/abcd它应该显示: show abcd或当我访问/public/api/location/1234它应该显示show 1234之后我打算将中间件修改为仅允许要传递到{location}数值。

但是,如果我仅使用默认的中间件代码运行,则页面将返回白色,而不显示任何内容。 我从路由中删除了中间件,它按预期显示了文本。

我知道我可以将中间件附加到控制器,但是我想到了将其附加到路由中,以便可以使用路由的组功能编写和应用一些通用中间件,对吧?

你们觉得我哪里错了? 在此先感谢您的关注!

检查您的\\ app \\ http \\ kernel.php文件,以查看是否已将中间件注册为路由中间件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM