В некотором контексте: я установил приложение Laravel 5 для разделения на модули. Функция загрузки() в моем AppServiceProvider выглядит следующим образом:Глобальный маршрут в Laravel 5
public function boot()
{
// We want to register the modules in the Modules folder
$modulesPath = app_path() . '/Modules';
$handle = opendir($modulesPath);
// Loop through the module directory and register each module
while (($module = readdir($handle)) !== false) {
if ($module != "." && $module != ".." && is_dir("{$modulesPath}/{$module}")) {
// Check if there are routes for that module, if so include
if (file_exists($modulesPath . '/' . $module . '/routes.php')) {
include $modulesPath . '/' . $module . '/routes.php';
}
// Check if there are views for that module, if so set a namespace for those views
if (is_dir($modulesPath . '/' . $module . '/Views')) {
$this->loadViewsFrom($modulesPath . '/' . $module . '/Views', strtolower($module));
}
}
}
}
Идея заключается в том, чтобы быть в состоянии держать вещи, разделенные в модулях, но и глобальные маршруты и глобальный контроллер. Таким образом, каждый модуль имеет свой собственный файл routes.php, который выглядит примерно так:
<?php
Route::group(array('module'=>'MyModule','namespace' => 'NexusHub\Modules\MyModule\Controllers'), function() {
Route::resource('mymodule', 'MyModuleController');
});
Я тогда глобальный файл routes.php который выглядит следующим образом:
<?php
Route::any('{catchall}', '[email protected]')->where('catchall', '(.*)');
Route::group(array('module'=>'Global'), function() {
Route::resource('', 'GlobalController');
});
Проблема Я что я вижу, что мой маршрут не собирает модули. Модули запускают собственные маршруты, но основной путь игнорируется.
Насколько я пытаюсь это сделать, на данный момент цель состоит в том, что все модули используют один и тот же макет, и для этого макета требуется, чтобы некоторые данные всегда извлекались, поэтому глобальный контроллер хватал бы то, что нужно, и делал он доступен для макета. Но я полагаю, что в будущем могут быть и другие вещи, где пригодился бы глобальный файл маршрута, который может захватывать несколько разных маршрутов на основе произвольных правил и запускать дополнительный код.
UPDATE: Удалена строка, включающая глобальные маршруты, так как я понял, что они по умолчанию включены.
Вы пробовали включить ваши глобальные маршруты после того, как вы включили маршруты вашего модуля? – nrivero
Просто попробовал, неважно. Я также понял, что мне даже не нужна эта строка, глобальный файл маршрута загружается независимо от того, включает ли app_path(). '/Http/routes.php'; линия на самом деле не нужна. И если я удалю его, глобальные маршруты по-прежнему будут включены после модулей. – Rocket04
Из вашего описания, если вы просто пытаетесь вставить некоторые данные в _all_ маршруты/представления, то это похоже на то, что композиции для представления являются более подходящим решением. –