我有两个中间件: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/

10-12 04:45