Ich habe ein einfaches Widget in meinem aktuellen Projekt yii2 erstellt. Es erstellt einfach eine Auswahlliste für alle jui-Themen und ermöglicht es dem Benutzer, das Thema zu ändern und es mit Hilfe von Cookies zu speichern.
Dieses Widget benötigt zwei Javascript-Dateien, - sie sind in run () registriert - einer davon ist das Plugin jquery cookies. Ich frage nach dem Wesen des Weges, Integrität dieses Widget und seiner js-Dateien zu speichern, um es einfach zu machen, in anderen Yii2-Projekten wiederverwendet zu werden, ohne die Notwendigkeit, alle benötigten js-Dateien maunally zu kopieren?
%Vor%Endlich habe ich die Lösung gefunden. Es hängt von Yii2-Erweiterungen und AssetBundles . Die Geschichte ist einfach, machen Sie einfach alle Dateien in einem Ordner in einem der Standard-Yii2-Ordner, zum Beispiel: common, vendor .- Übrigens, Anbieter ist in beiden grundlegenden und erweiterten yii2-Anwendung Vorlage gefunden -.
Zusätzlich zu allen Dateien, d. h. für meinen Fall , der PHP-Datei der Widget-Klasse und den Javascripts-Dateien, müssen Sie die PHP-Klassendatei YourWidgetNameAsset erstellen. Tatsächlich liegt der Hauptschlüssel der Lösung in dieser Klasse.
Mein Fall
Ich habe ein Widget mit dem Namen JuiThemeSelectWidget Ich habe es in einen Ordner mit dem Namen saidbakr
unter vendor
Verzeichnis gelegt, so dass wir vendor\saidbakr
namespace haben. Dieser Ordner enthält die folgenden vier Dateien:
Die Dateinummer 3 hängt von der Dateinummer 4 zum Erstellen von Cookies ab, um die letzte Benutzerwahl zu speichern.
Nun sehen wir den Code der Dateinummer 2 JuiThemeSelectAsset.php
:
Hier haben wir AssetBundle für das Widget definiert, ähnlich wie in beschrieben offizielle Quelle .
Nun schauen wir uns die Kopfzeile der Widget-Klasse selbst und ihre run()
-Methode an:
Es ist klar, dass wir das Asset-Bündel wie in beschrieben verwendet haben link , aber hier haben wir $this->getView()
anstelle von $this
verwendet, weil die Methode nicht aus einer Ansicht heraus aufgerufen wird.
Ich habe den Ordner saidbakr
komprimiert und ihn nach diesem Ort hochgeladen oder checkout this GitHub-Repository , um zu überprüfen, was ich gemacht habe, welcher Name
Widget in yii2 hinzufügen Erstellen Sie den Komponentenordner im Stammverzeichnis. Erstellen Sie dann die PHP-Datei. Verwenden Sie Namespace-Komponenten in dieser Datei (Namespace-App \ Komponenten). Widget einschließen (benutze App \ base \ widget). Erstellen Sie eine Klasse, die die Widget-Klasse erweitert Namespace-App \ Komponenten; benutze yii \ base \ Widget; Erstellen Sie einen View-Ordner, der View-File-Aufrufe vom Widget enthält.
Tags und Links php yii2 widget yii2-advanced-app