Laravel. Как исправить ошибку при использовании контроллера «Class does not exist»?

Нужно построить сайт на Laravel с модульной системой. Нашел руководство, сделал "базу" как написано, дабы спокойно изучать материал. Не вышло.

В общем в корне создал папку вот с такой структурой:
Папка Modules
5d6659d5d6a86267917322.png

Вот такие изменения произвел в стандартных папках:
Создал провайдер для подключения модулей App\Providers\ModulesServiceProvider.php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ModulesServiceProvider extends ServiceProvider {
	public function boot() {
		$modules = config("modules.modules");

		if ($modules) {
			foreach($modules as $module) {
				// Routes
				if (file_exists(__DIR__.'/../../Modules/'.$module.'/Routes/routes.php')) {
					$this->loadRoutesFrom(__DIR__.'/../../Modules/'.$module.'/Routes/routes.php');
				}
				// Views
				if (is_dir(__DIR__.'/../../Modules/'.$module.'/Views')) {
					$this->loadViewsFrom(__DIR__.'/../../Modules/'.$module.'/Views', $module);
				}
				// Migration
				if (is_dir(__DIR__.'/../../Modules/'.$module.'/Migration')) {
					$this->loadMigrationsFrom(__DIR__.'/../../Modules/'.$module.'/Migration');
				}
				// Lang
				if (is_dir(__DIR__.'/../../Modules/'.$module.'/Lang')) {
					$this->loadTranslationsFrom(__DIR__.'/../../Modules/'.$module.'/Lang', $module);
				}
			}
		}
	}
}

Подключил его в config\app.php

'providers' => [
	...,
	App\Providers\ModulesServiceProvider::class,
	...
];

В новом файле настроек добавил перечень модулей config/modules.php
return [
	'modules' => [
		'Test',
	]
];

Создал контроллер Modules\Test\Controllers\TestController.php
namespace Modules\Test\Controllers;

use Illuminate\Routing\Controller;

class TestController extends Controller {
	public function index() {
		
		return view('Test::index');
	}
}

Маршрут пробовал указать двумя способами
Первый
Route::namespace('Modules\Test\Controllers')->get('/', 'TestController@index');
Второй
Route::group(['namespace' => 'Modules\Test\Controllers'], function(){
	Route::get('/', 'TestController@index');
});
Но ни один не сработал.

Маршрутизация работает, но когда дело доходит до контроллера, Laravel не может отыскать класс TestController. Надеюсь, кто-нибудь подскажет в чем проблема.

UPD:
Полный текст ошибки

5d666911969c6034233512.png
  • Вопрос задан
  • 911 просмотров
Решения вопроса 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
composer.json:

"autoload": {
        "psr-4": {
            "App\\": "app/",
            "Modules\\": "Modules/"
        },
    },
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ajaxtelamonid
@ajaxtelamonid
Laravel
Route::namespace('\Modules\Test\Controllers') ? Он же в корне ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы