Satz layout von Modul-controller in yii2
Habe ich drei layouts in meine layouts-Ordner im main Ordner sichten. Ich habe ein Modul, der so genannte sub-Domain. In meinem subDomain-Modul ich habe einen Controller namens HomeController. Im HomeController es gibt eine Aktion namens getDomain()
.
In der getDomain()
Aktion, die ich ändern möchten die wichtigsten layout getDomainLayout
. Aber es gibt eine Fehlermeldung, wenn ich einen Gutscheincode verwenden:
$this->layout = "getDomainLayout";
Yii2 wirft:
Invalid Parameter – yii\base\InvalidParamException
The view file does not exist: \myyii2\modules\subDomain\views\layouts\bersih.php
InformationsquelleAutor Maulana Yusuf | 2015-08-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Möglichkeiten, um dieses Problem zu beheben.
Erstellen Sie eine layout-Datei in das entsprechende Modul-Verzeichnis
Beispiel unten zeigt eine kanonische Verzeichnis-Struktur einige
subDomain
Modul, einschließlich der layouts (domain.php):: Nach dieser einfachen Struktur können Sie beliebige layout, indem Sie seinen Namen in das Modul controller:
Dies ist die am meisten bevorzugte Art, da Module sind eigenständige software-Einheiten, die aus eigenen Modellen, layouts, Controller, etc.
Geben Sie den vollständigen Pfad zu dem Verzeichnis ein, in Ihre layout-Datei
In einigen Fällen möchten Sie vielleicht die Verwendung einer layout-Datei, die sich außerhalb des Modul-Verzeichnis:
Wo @app ist der Basis-Pfad der aktuell ausgeführten Anwendung, zum Beispiel:
In dieser situation sicher sein, dass die main.php layout-Datei ist im folgenden Verzeichnis:
InformationsquelleAutor Oleksandr
Wenn ich ein anderes layout im controller, ich einfach, fügen Sie den folgenden code
sicher sein, dass Ihr layout vorhanden ist im entsprechenden Ordner
InformationsquelleAutor zhisme
Anderen eine bequeme Möglichkeit der Verwendung von verschiedenen layouts in Ihre Anwendung zu schaffen, ist eine abstrakte Klasse. Zum Beispiel:
Dann nur
extends
Ihre controller.InformationsquelleAutor Russell Sk.
Können Sie die variable in der Steuerung.
Oder, indem Sie den vollständigen Pfad
InformationsquelleAutor rafaelvaloto
Können Sie hinzufügen, $this->layout = 'Haupt'; im Modul init-Methode. Die main.php sollte sich innerhalb der Module view-Ordner unter layouts.
InformationsquelleAutor Opad
Wenn Sie wollen, um es standardmäßig im Modul Sie können tun, dass durch das schreiben
innerhalb der
init()
- Funktion der Modul-Klasse Ihre vollständige code sieht wie folgt ausInformationsquelleAutor Muhammad Omer Aslam
Sie können auch die
layout
Eigenschaft inconstrutor
wie folgt:InformationsquelleAutor SaidbakR