我有两个中间件:beforeCache和afterCache,两者都在内核上注册。
我想按以下顺序将它们称为路由:
1. beforeCache
2. myController
3. afterCache
如果我定义这样的路线:
Route::get('especies/{id}', [
'middleware' => 'beforeCache',
'uses' => 'MyController@myMethod',
'middleware' => 'afterCache',
]);
beforeCache不执行,因为afterCache重新定义了相同的阵列键中间件。
我该怎么办?谢谢!
最佳答案
我假设您正在使用5.1,但实际上是在尝试在路由上定义属性数组。方括号[]只是表示array(...)的简写形式。
从文档(http://laravel.com/docs/5.1/middleware#defining-middleware),特别是“中间件之前/之后”,您只需要返回某种方式即可。
对于Before中间件,您执行代码并在代码执行后返回下一个请求。
public function handle($request, Closure $next)
{
// Perform action
return $next($request);
}
对于After Middleware,您将处理其余的请求,然后执行代码,最后返回响应。
public function handle($request, Closure $next)
{
$response = $next($request);
// Perform action
return $response;
}
路线最终看起来像这样,
Route::get('especies/{id}',[
'middleware' => [
'beforeCache',
'afterCache'
],
'uses' => 'MyController@myMethod'
]);
关于php - Laravel 5 : Middleware before & after into routes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31322312/