Я знаю, что есть вопросы/ответ для маршрутизации в модулях. Но я пробовал все это, но я не могу получить обходной путь.Как обрабатывать маршрутизацию в модульном приложении laravel
Позвольте мне показать, что я сделал.
Моя структура папок
Мои ModuleServiceProvider.php
namespace App\Modules;
class ModulesServiceProvider extends \Illuminate\Support\ServiceProvider
{
/**
* Will make sure that the required modules have been fully loaded
* @return void
*/
public function boot()
{
if ($module = $this->getModule(func_get_args())) {
include __DIR__.'/'.$module.'/routes.php';
}
$this->loadViewsFrom(__DIR__.'/'.$module.'/Views', 'core');
}
public function register()
{
if ($module = $this->getModule(func_get_args())) {
}
}
public function getModule($args)
{
$module = (isset($args[0]) and is_string($args[0])) ? $args[0] : null;
return $module;
}
}
Мои BlogServiceProvider.php
namespace App\Modules\Blog;
class BlogServiceProvider extends \App\Modules\ModulesServiceProvider {
public function register()
{
parent::register('Blog');
}
public function boot()
{
parent::boot('Blog');
}
}
в приложении \ Config \ app.php
'App\Modules\Blog\BlogServiceProvider',
// добавлены в массив поставщиков
в приложении \ Config
module.php созданный
return [
'modules' => [
'Blog',
]
];
в composer.json
"autoload": {
"classmap": [
"database",
"app/Modules"
],
"psr-4": {
"App\\": "app/",
"Modules\\": "Modules/"
}
},
Все кажется совершенным, но в я в ловушке в маршрутах.
в моем приложении \ Modules \ Блог \ routes.php
Route::group(['namespace' => array('Modules\Blog')], function() {
Route::get('/',['as' => 'home', 'uses' => '[email protected]']);
});
Route::get('/', ['as' => 'home', 'uses' => 'App\Modules\Blog\Controllers\[email protected]']);
Я получаю PostController не существует ошибки
Моих имена контроллера
namespace App\Modules\Blog\Controllers;
Я получаю эту ошибку по обоим маршрутам. я указываю путь контроллера или нет. любая помощь пожалуйста. Как проложить маршрут в модульном приложении.
Я думаю, что эта строка на вашем composer.json: '" Модули \\ ":" Модули/"' должны быть '' Модули \\ ":" app/Modules/"' вместо этого. И не забудьте сделать 'composer dump-autoload'. Изменить: см. Ответ @Ruffles. У вас уже есть папка «Модули» внутри приложения /. – Doom5