So erstellen Sie ein wiederverwendbares Widget in Yii2

8

Ich habe ein einfaches Widget in meinem aktuellen Projekt 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%     
SaidbakR 25.01.2015, 03:09
quelle

2 Antworten

11

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:

  1. JuiThemeSelectWidget.php
  2. JuiThemeSelectAsset.php
  3. JuiThemeSelect.js
  4. jquery.cookie.js

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 :

%Vor%

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:

%Vor%

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 Yii2 Erweiterung . Entpacken Sie einfach den Inhalt des Archivs in den Ordner namens saybakr direkt unter Herstellerordner, Also muss die Dateistruktur 'Hersteller \ saidbakr' (die vier Dateien in der obigen Liste) sein , und verwenden Sie das Widget in Ihrem sieht etwa so aus:

%Vor%     
SaidbakR 25.01.2015, 23:21
quelle
1

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.

    
Ranbir Das 19.09.2015 17:54
quelle

Tags und Links