Борьба с определением пространства имен группы маршрутов в Laravel 8

#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»);