Ich weiß, es gibt Frage/Antwort für das Routing in Modulen. Aber ich habe alles versucht, aber ich kann keine Problemumgehung bekommen.Wie routing in Laravel modulare Anwendung
Lassen Sie mich zeigen, was ich getan habe.
Meine Ordnerstruktur
Mein 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;
}
}
Mein BlogServiceProvider.php
namespace App\Modules\Blog;
class BlogServiceProvider extends \App\Modules\ModulesServiceProvider {
public function register()
{
parent::register('Blog');
}
public function boot()
{
parent::boot('Blog');
}
}
in app \ config \ app.php
'App\Modules\Blog\BlogServiceProvider',
// in Anbieter Array hinzugefügt
in app \ config
module.php erstellt
return [
'modules' => [
'Blog',
]
];
in composer.json
"autoload": {
"classmap": [
"database",
"app/Modules"
],
"psr-4": {
"App\\": "app/",
"Modules\\": "Modules/"
}
},
Alles scheint perfekt, aber in i gefangen in Routen.
in meiner app \ Modules \ Blog \ 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]']);
Ich bin immer Postcontroller existiert nicht Fehler
Mein Controller-Namespace
namespace App\Modules\Blog\Controllers;
Ich erhalte diesen Fehler auf beiden Routen. ob ich Controller-Pfad angeben oder nicht. jede Hilfe bitte. Wie in einer modularen Anwendung zu routen.
Ich denke, diese Zeile auf Ihrem composer.json: '" Module \\ ":" Module/"' sollte '" Module \\ ":" app/Module/"' statt. Und vergiss nicht, 'composer dump-autoload' zu machen. Bearbeiten: Siehe @Ruffle Antwort. Sie haben den Ordner Module bereits in der App /. – Doom5