Находчивые маршруты Laravel 5 плюс промежуточное ПО

Можно ли добавить промежуточное ПО ко всем или некоторым элементам ресурсного маршрута?

Например...

<?php

Route::resource('quotes', 'QuotesController');

Кроме того, если возможно, я хотел, чтобы все маршруты, кроме index и show, использовали auth промежуточное ПО. Или это должно быть что-то, что нужно сделать в контроллере?


person kilrizzy    schedule 25.02.2015    source источник


Ответы (5)


Затем в конструкторе QuotesController вы можете использовать:

$this->middleware('auth', ['except' => ['index','show']]);

Ссылка: Промежуточное ПО контроллера в Laravel 5

person Marcin Nabiałek    schedule 25.02.2015
comment
Спасибо! Не был уверен, можно ли это сделать в вызове ресурса, но похоже, что это не то, на что я смотрел до сих пор. - person kilrizzy; 25.02.2015
comment
Мне нужно передать промежуточному программному обеспечению другие аргументы, возможно ли это? - person activatedgeek; 16.07.2015
comment
@activatedgeek Если у вас есть новый вопрос, задайте его - person Marcin Nabiałek; 16.07.2015
comment
как насчет использования Route :: apiResources ([])? не нашел как сразу добавить мидлвар для всех apiResources? - person trainoasis; 04.12.2020


В Laravel с PHP 7 у меня не работало с multi-method exclude, пока я не написал

Route::group(['middleware' => 'auth:api'], function() {
        
Route::resource('categories', 'CategoryController', ['except' => 'show,index']);
});

может это кому-то поможет.

person Mohannd    schedule 23.11.2017

ОБНОВЛЕНИЕ ДЛЯ LARAVEL 8.x

web.php:

Route::resource('quotes', 'QuotesController');

в вашем контроллере:

public function __construct()
{
        $this->middleware('auth')->except(['index','show']);
        // OR
        $this->middleware('auth')->only(['store','update','edit','create']);
}

Ссылка: ПО промежуточного слоя контроллера

person bar5um    schedule 22.01.2021

Искал лучшее решение для Laravel 5.8+.

Вот что я сделал:

Примените промежуточное ПО к ресурсу, кроме тех, к кому вы не хотите применять промежуточное ПО. (Здесь индексировать и показывать)

 Route::resource('resource', 'Controller', [
            'except' => [
                'index',
                'show'
            ]
        ])
        ->middleware(['auth']);

Затем создайте маршруты ресурсов, которые были кроме первого. Так что индексируйте и показывайте.

Route::resource('resource', 'Controller', [
        'only' => [
            'index',
            'show'
        ]
    ]);
person Chargnn    schedule 21.10.2019