Laravel 5 Находчивые маршруты плюс промежуточное ПО
Можно ли добавить промежуточное ПО для всех или некоторых элементов изобретательного маршрута?
Например...
<?php
Route::resource('quotes', 'QuotesController');
Кроме того, если возможно, я хотел бы сделать все маршруты в стороне от index
а также show
использовать auth
промежуточное программное обеспечение. Или это должно быть что-то, что должно быть сделано в контроллере?
6 ответов
В QuotesController
Конструктор вы можете использовать:
$this->middleware('auth', ['except' => ['index','show']]);
Вы можете использовать Route Group в сочетании с концепцией Middleware: http://laravel.com/docs/master/routing
Route::group(['middleware' => 'auth'], function()
{
Route::resource('todo', 'TodoController', ['only' => ['index']]);
});
В laravel 5.5 с php 7 он не работал для меня с исключением нескольких методов, пока я не написал
Route::group(['middleware' => 'auth:api'], function() {
Route::resource('categories', 'CategoryController', ['except' => 'show,index']);
});
может быть, это поможет кому-то.
ОБНОВЛЕНИЕ ДЛЯ LARAVEL 8.x
веб.php:
Route::resource('quotes', 'QuotesController');
в вашем контроллере:
public function __construct()
{
$this->middleware('auth')->except(['index','show']);
// OR
$this->middleware('auth')->only(['store','update','edit','create']);
}
Искал лучшее решение для Laravel 5.8+.
Вот что я сделал:
Примените промежуточное ПО к ресурсу, кроме тех, к кому вы не хотите применять промежуточное ПО. (Здесь индексировать и показывать)
Route::resource('resource', 'Controller', [
'except' => [
'index',
'show'
]
])
->middleware(['auth']);
Затем создайте маршруты ресурсов, которые были кроме первого. Так что индексируйте и показывайте.
Route::resource('resource', 'Controller', [
'only' => [
'index',
'show'
]
]);
Попробуй это
$this->middleware('auth', ['кроме' => ['index','show']]);