Нужно построить сайт на Laravel с модульной системой. Нашел руководство, сделал "базу" как написано, дабы спокойно изучать материал. Не вышло.
В общем в корне создал папку вот с такой структурой:
Вот такие изменения произвел в стандартных папках:
Создал провайдер для подключения модулей App\Providers\ModulesServiceProvider.phpnamespace 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.phpreturn [
'modules' => [
'Test',
]
];
Создал контроллер Modules\Test\Controllers\TestController.phpnamespace 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: