Im Moment versuche ich Theming für mein Yii2-basiertes Projekt zu implementieren. Wie ich das Ding jetzt sehen:Yii2 einen Pfad Alias aus Informationen in DB gespeichert
- Der Benutzer wählt aus der Liste auf der Einstellungen Seite im Backend eine Anwendung Thema.
- Mit yii2-settings speichere ich alle Konfigurationsdaten in der DB (ziemlich einfach).
- In der Anwendung bootstrap.php Ich erstelle neue Alias namens @theme. Im Grunde sollte es uns zu einem Basispfad des Anwendungsthemas führen (benutzt in der Suche Pfade, Vermögensverwalter, e.t.c.).
Nach offiziellen Dokumentation, das ist, wie ich meine Ansicht Komponente konfiguriert:
'view' => [ 'theme' => [ 'basePath' => '@theme', 'baseUrl' => '@theme', 'pathMap' => [ '@app/views' => '@theme', '@app/widgets' => '@theme/widgets', '@app/modules' => '@theme/modules', ], ], ],
Ein Problem, das ich habe ist mit S.3. Nach yii2-settings Dokumentation, die ist, wie ich die Einstellungen lesen soll:
$theme = Yii::$app->settings->get('name', 'general');
Yii::setAlias('@theme', realpath(dirname(__FILE__)."/../../themes/$theme"));
Aber natürlich ist es für mich arbeiten ist nicht wegen yii2-Einstellungen Komponente noch nicht initialisiert hat, als bootstrap.php genannt wird. Ich habe versucht, es später in der init() -Methode von meinem Basis-Controller zu initialisieren, dann passen Sie andere Aliase manuell an, aber ich fühle mich so etwas "unrein", und es schlägt immer noch fehl, weil @theme Alias auch verwendet wird in Asset-Datei, die Yii2 zu veröffentlichen beginnt vor dem Aufruf der Init-Methode des Controllers.
Hat jemand also irgendwelche Gedanken darüber, wie man den Code so wenig wie möglich "hackt"? Ich weiß, dass ich die Konfiguration einfach in eine Datei verschieben und sie dann manuell vor der Anwendungsinitialisierung lesen könnte, aber es ist immer noch nicht so, wie ich es möchte. Vielleicht gibt es eine Möglichkeit, einige Systemkomponenten zu überschreiben, um den Alias nach dem Laden der db-Komponente, aber vor der Konfiguration der Ansichtskomponenten festzulegen. Oder lädt Yii diese Komponenten in einer anderen Reihenfolge? Sowieso. Jede Hilfe wäre willkommen!
http://stackoverflow.com/questions/32689230/yii2-params-access-innerhalb-lokal-config-file-in-common-directory –