Привет.
Есть маршруты модулей в modules.php:
<?php
Route::group(['namespace' => 'Gepard\Modules\Core\Controllers', 'middleware' => 'admin'], base_path('app/Modules/Core/Routes/routes.php'));
Route::group(['prefix' => '/admin', 'namespace' => 'Gepard\Modules\Admin\Controllers', 'middleware' => 'admin'], base_path('app/Modules/Admin/Routes/routes.php'));
Route::group(['namespace' => 'Gepard\Modules\Page\Controllers'], base_path('app/Modules/Page/Routes/routes.php'));
Route::get('/', 'Gepard\Modules\Page\Controllers\PageController@index');
Указаны префиксы, хренефиксы, неймспейсы, базовый путь к файлам с маршрутами модуля.
Очевидно же, что "если видим префикс "админ", то идем в файл /base_path/ и берем маршруты оттуда, вставляя неймспейс модуля".
Ок, берем модуль "Админ", вот его файл с маршрутами:
<?php
Route::get('/', 'AdminController@index')->name('sdf');
Route::get('/test/{id?}', 'AdminController@view');
Route::get('/profile/{user?}', 'ProfileController@index')->name('a.user');
Я ожидаю, что по маршруту "domain.local/admin" мне покажут index() из AdminController (Modules\Admin\Controllers\AdminController), а по маршруту "domain.local/" мне покажут вот это
Route::get('/', 'Gepard\Modules\Page\Controllers\PageController@index');
Так вот, по маршруту "domain.local/admin" мне таки показывают все что нужно, а вот по маршруту "domain.local/" мне пишут, что Контроллер AdminController не найден, мать его! С чего? С какого они взяли, что для маршрута "/" нужен маршрут из группы с префиксом "admin"?
Пробую убрать вообще "/" из группы "admin". Пишут, что CoreController не найден. Это потому что там тоже определен маршрут "/". Ок, убираем и его. И вот тогда уже мне выдают этот ваш
Route::get('/', 'Gepard\Modules\Page\Controllers\PageController@index');
Т.е., я не могу создать маршрут просто с черточкой "/". Одного префикса недостаточно. Почему?
Как мне создать тогда индексный маршрут для модуля? Я хочу, чтобы по адресу domain.local/admin запускался Gepard\Modules\Admin\Controllers\AdminController@index, а по адресу domain.local/ запускалось что-то еще, пусть Gepard\Modules\Admin\Controllers\PageController@index, ну или хотя бы App\Http\Controllers\WelcomeController@index... Что мне поправить?
Что не так с этими неймспейсами?(
modulesServiceProvider
<?php namespace Gepard\Modules;
use Illuminate\Support\ServiceProvider;
/**
* Сервис-провайдер для подключения модулей
*/
class ModulesServiceProvider extends ServiceProvider {
public function boot()
{
$modules = config('module.modules');
if($modules)
{
foreach ($modules as $module)
{
if (file_exists(__DIR__.'/'.$module.'/Routes/routes.php'))
{
$this->loadRoutesFrom(__DIR__.'/'.$module.'/Routes/routes.php');
}
//Загружаем View
//view('Test::admin')
if(is_dir(__DIR__.'/'.$module.'/Views'))
{
$this->loadViewsFrom(__DIR__.'/'.$module.'/Views', $module);
}
//Миграции
if(is_dir(__DIR__.'/'.$module.'/Migrations'))
{
$this->loadMigrationsFrom(__DIR__.'/'.$module.'/Migrations');
}
//Переводы
if(is_dir(__DIR__.'/'.$module.'/Lang'))
{
$this->loadTranslationsFrom(__DIR__.'/'.$module.'/Lang', $module);
}
}
}
}
public function register()
{
}
}
RouteServiceProvider
protected function mapModulesRoutes()
{
Route::middleware('web')
->group(base_path('routes/modules.php'));
}