Gibt es eine Möglichkeit, Yii2 zu zwingen, Modul-Assets bei jeder Anfrage neu zu laden?

StackOverflow https://stackoverflow.com//questions/25054806

  •  21-12-2019
  •  | 
  •  

Frage

Meine Website ist in separate Module unterteilt.Jedes Modul hat seine eigenen spezifischen CSS- oder JS-Dateien.
Yiis AssetManager erstellt einen Ordner, wenn ich zum ersten Mal eine Seite öffne, die meine Assets verwendet.

Leider, wenn ich etwas in meinen Dateien ändere Yii 1.x lädt meine CSS- oder JS-Dateien nicht neu.

Ich muss den Ordner Web / Assets manuell löschen.Es ist wirklich nervig, wenn Sie die App entwickeln.

Dies funktioniert, wenn ich dem Backend-Ordner ein Modul hinzufüge, aber nicht, wenn ich ein Modul im Herstellerordner mit meinem eigenen Namespace erstelle.

War es hilfreich?

Lösung

in Bezug auf yii1.x mit assetManager können Sie dies tun, indem Sie in Ihrer Konfigurationsdatei "forcecopy 'Attribute" einstellen, um in Ihrer Konfigurationsdatei

zu true zu setzt.

... kopieren Sie die Asset-Dateien und -verzeichnisse, auch wenn sie bereits veröffentlicht werden Vor.Diese Eigenschaft wird nur während der Entwicklungsstufe verwendet

siehe forcecopy dokumentation hier für weitere Informationen.

Alternativ können Sie linkAssets verwenden, der die Dateien nicht kopiert, sondern einen Soft-Link zwischen Ihren Asset-Dateien und Ihrem Assets-Verzeichnis erstellen.Sie können natürlich nicht beide verwenden.

für den zweiten Teil der Frage Ich gehe davon aus, dass dies in YII 2.x ist. Sie sollen Assetbundles verwenden, Sie können jedes Namespace-Bundle von überall an registrieren. Sie registrieren es einfach in der Ansicht mit einigen so

generasacodicetagpre.

Andere Tipps

In YII2 können Sie einen Zeitstempel an die URLs von Assets so anhängen ...

generasacodicetagpre.

Dies zwingt das Vermögen nicht, auf jede Anforderung zu laden, aber wenn eine Asset-Datei jedoch geändert wird, ändert sich die URL aufgrund des Zeitstempels, und das wird das Event anwenden, das neu veröffentlicht wird.

Sie können einstellen forceCopy = true.

class Assets extends AssetBundle{

    public function init()
    {
        parent::init();
        $this->publishOptions['forceCopy'] = true;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top