Yii framework benutzerdefinierte Header
Möchte ich verschiedene Header für meine landing-page und alle anderen Seiten in meiner webapp. Was ist der beste Weg, dies zu tun?
Soweit mein Verständnis geht, die Kopf-und Fußzeile geladen werden, aus der view/layouts/main.php In meinem Fall, da ich mich mit einem Thema, das es geladen wird themes/new/views/layouts/main.php
Möchte ich nun den header-Abschnitt für alle meine Seiten außer der Landung-Seite, mit dem header-Abschnitt, wie in der "main.php" aber die landing-page sollte einen neuen header. Wie sollte ich das tun? Sollte ich einen render partial? Und da bin ich Yii-Neuling, wie sollte ich das tun?
Kann ich auch mit einem der anderen layouts, Dateien, column1.php oder column2.php? Und wie?
Ich bin nicht auf der Suche nach umfangreichen hand hier. Ich brauche nur ein heads-up zu kommen, wie die Menschen umgesetzt haben ähnliche Funktionalität.
InformationsquelleAutor Abhinav | 2011-06-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es teilweise davon abhängig, wie unterschiedlich die überschriften werden in Bezug auf Ihre Herangehensweise. Wenn Sie wollen, dass Sie vollständig getrennt sein, könnten Sie eine weitere layout-Dateien, entweder in Kombination mit main.php oder statt.
Legen Sie die layout-Datei zu Beginn der controller-Klasse mit sowas wie:
Damit wird das Standard-layout für einen controller. Sie können den Wert ändern, der in einer action-Funktion oder auswerten einer Bedingung in die "beforeAction" - Funktion.
Standardmäßig generierten admin-Seiten (mit "gii" oder der Befehl-Linie) nutzen diese column1.php und column2.php layouts mit main.php und bieten ein anständiges Beispiel zu sehen, wie Sie arbeiten. Bewegen Sie einfach den Inhalt aus main.php Sie anpassen möchten, und legen Sie es in ein separates layout-Dateien. Wenn Sie immer noch um Inhalte zu teilen, können Sie den freigegebenen Inhalt in main.php.
Wenn es nur eine Frage der änderung von ein paar Parametern, die Sie verwenden können
$this->getAction()->getId()
um den Namen der Aktion und verwenden, zu ändern, was Inhalt geladen wird innerhalb des layout, z.B. eine bestimmte css-oder js-Datei. Jede komplexe Logik würden Sie wollen, zu tun in der Steuerung.Etwas wie eine nav-Leiste oder ein ähnliches, können Sie auch
include
oderrenderPartial
Basis auf eine Umgebungsvariable, die Sie in den controller.InformationsquelleAutor ldg
Ich bin in der Regel erstellen Sie ein widget wie HeaderWidget mit wenigen Dateien anzeigen und zählen im main-layout. In der controller oder die action definieren notwendige Einsicht-Datei-header, und geben Sie in das widget.
In der Basis-controller können Sie definieren-Eigenschaft public $headerName = 'defaultHeaderView'
Und legen Wert hängt von einigen Bedingungen.
Natürlich, Sie brauchen, um zu erstellen BController extends CController und allen anderen Controllern erstreckt sich von Ihrem BController
InformationsquelleAutor Andrejs Pankins