[英]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.