2016-04-20 2 views
9

Можно ли отключить конкретное промежуточное программное обеспечение без отключения всего промежуточного программного обеспечения?Laravel 5.2.x отключить определенное промежуточное ПО

Я буду использовать его при запуске тестов, поэтому я не хочу определять группы промежуточного программного обеспечения, а затем назначать их своим маршрутам.

$this->withoutMiddleware(); // <-- This will prevent all middleware 

$this->withoutMiddleware('web'); // <-- What I want is something like this 

ответ

0

Ну, вы можете использовать middleware groups, который является гораздо более эффективным подходом. Определите несколько групп и назначьте их своим маршрутам.

+1

Web, упомянутые в вопросе (вероятно) промежуточного слоя группа уже , Тем не менее, это не объясняет, как отключить одно промежуточное программное обеспечение или группу промежуточного программного обеспечения. –

3

У меня есть альтернативное решение, можно добавить условие в вашем затрагиваемом промежуточном слое в соответствии с вашим Environnement:

public function handle($request, Closure $next) 
{ 
    if (App::environment('testing')) { 
     return $next($request); 
    } 

    // Your middleware logic 

    return $next($request); 
} 
+0

Я думаю, это должно быть хорошим решением для меня. Хотелось бы, чтобы был метод, позволяющий отключить конкретное промежуточное ПО. – aleixfabra

+0

Я не знаю существования такой функции. Это может быть разумный запрос на получение репарации laravel. – soywod

+0

Я согласен с вами. – aleixfabra

0

Вы можете добавить определенные маршруты в $ кроме массива в самом ЕМ.

Например: Я не хочу, чтобы мои API маршруты, чтобы иметь веб-промежуточное программное обеспечение, так это то, что я сделал в VerifyCsrfToken.php

protected $except = [ 
    "api/*", 
    "more/routes", 
];