#routes #laravel-8
Вопрос:
Я пытаюсь использовать группу маршрутов в Laravel 8 для определения пространства имен моих различных маршрутов. Моя цель состоит в том, чтобы избежать большого количества инструкций use в начале файла и не указывать все пространство имен в каждом объявлении маршрута. У меня будет другое пространство имен для моих контроллеров, поэтому мне будет удобно иметь возможность определять пространство имен для разных групп маршрутов.
Это прекрасно работает, когда я использую ресурс маршрута или вызываемый контроллер, но как только я пытаюсь создать пользовательский маршрут для определенного метода контроллера, я получаю ошибку.
Вот определение маршрута, которое я пробовал до сих пор:
// Example #1: This is working Route::middleware('guest')-gt;namespace('AppHttpControllers')-gt;group(function () { Route::resource('test', TestController::class)-gt;only(['index']); Route::get('/dashboard', DashboardController::class)-gt;name('dashboard'); // Invokable controller }); // Example #2: This is working Route::group(['middleware' =gt; 'guest', 'namespace' =gt; 'AppHttpControllers'], function () { Route::resource('test', TestController::class); Route::get('/dashboard', DashboardController::class)-gt;name('dashboard'); // Invokable controller }); // Example #3: This is working Route::group(['middleware' =gt; 'guest'], function () { Route::get('test', [AppHttpControllersTestController::class, 'index']); }); // Example #4: This is working use AppHttpControllersTestController; Route::group(['middleware' =gt; 'guest', 'namespace' =gt; 'AppHttpControllers'], function () { Route::get('test', [TestController::class, 'index']); }); // Example #5: This is working (namespace method is ignored!) Route::middleware('guest')-gt;namespace('AppHttpControllers')-gt;group(function () { Route::get('test', [AppHttpControllersTestController::class, 'index']); }); // Example #6: This is NOT working // IlluminateContractsContainerBindingResolutionException // Target class [TestController] does not exist. Route::middleware('guest')-gt;namespace('AppHttpControllers')-gt;group(function () { Route::get('test', [TestController::class, 'index']); });
Я думаю, что пример № 5 не должен работать, а пример № 6 должен работать. Я не понимаю, что я здесь пропустил?
Есть ли где-то ошибка или я пытаюсь сделать что-то совершенно неправильное?
Спасибо за вашу помощь!
Комментарии:
1. Я тоже пробовал этот синтаксис, он будет работать в примере № 6: Маршрут::get(«тест», «TestController@index»);