Ich möchte meine Bewerbung in Module aufteilen. Zum Beispiel würde es ein "Kern" -Modul geben, das die grundlegenden Anmeldefunktionen, das App-Layout / die App-Formatierung (CSS usw.), die Benutzerverwaltung und ein Tagebuch enthält.
Später kann ich andere Module wie einen Kontaktmanager erstellen, die einfach zur Anwendung hinzugefügt oder daraus entfernt werden können.
Die Apps-Navigation enthält eine gewisse Logik, um festzustellen, welche Module vorhanden sind, und um die Links zu diesen ein- / auszublenden.
Wie kann ich dies in Bezug auf Verzeichnisstruktur, Namespaces und alles andere tun, was benötigt wird?
Ich betrachte Creolab / Laravel-Module, aber es heißt, dass es für Laravel 4 ist. Kann ich es mit 5 immer noch genauso verwenden?
In der Dokumentation wird angegeben, dass Modelle, Controller und Ansichten in jedem Modulverzeichnis platziert werden sollen. Wie funktioniert dies jedoch mit Routen? Idealerweise möchte ich, dass jedes Modul eine eigene Datei route.php hat. Wie wird das alles mit den Sachen im http
und im resources
Verzeichnis funktionieren ?
Ich dachte an so etwas:
Aber ich habe keine Ahnung, wie ich es zum Laufen bringen würde.
Ich habe gerade das Tutorial hier ausprobiert:
http://creolab.hr/2013/05/modules-in-laravel-4/
Ohne zusätzliche Bibliotheken usw., nur reines Laravel 5.
Ich habe anscheinend eine Mauer mit einer Fehlermeldung getroffen:
FatalErrorException in ServiceProvider.php line 16:
Call to undefined method Illuminate\Config\Repository::package()
In Bezug auf Folgendes:
<?php namespace App\Modules;
abstract class ServiceProvider extends \Illuminate\Support\ServiceProvider
{
public function boot()
{
if ($module = $this->getModule(func_get_args())) {
$this->package('app/' . $module, $module, app_path() . '/modules/' . $module);
}
}
public function register()
{
if ($module = $this->getModule(func_get_args())) {
$this->app['config']->package('app/' . $module, app_path() . '/modules/' . $module . '/config');
// Add routes
$routes = app_path() . '/modules/' . $module . '/routes.php';
if (file_exists($routes)) require $routes;
}
}
public function getModule($args)
{
$module = (isset($args[0]) and is_string($args[0])) ? $args[0] : null;
return $module;
}
}
Was verursacht das und wie kann ich es beheben?
Ich habe mich jetzt ein bisschen mehr damit beschäftigt. Ich habe meine Paket- / Modulrouten und -ansichten zum Laufen gebracht, was großartig ist:
abstract class ServiceProvider extends \Illuminate\Support\ServiceProvider
{
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;
}
}
Ich habe noch eine letzte Frage: Wie würde ich alle meine Controller aus meinem Paket laden, ähnlich wie die loadViewsFrom()
Methode funktioniert?