In der MVC-Architektur wird View hauptsächlich zum Anzeigen von Informationen verwendet. Die Ansichtsebenendatei in Yii besteht aus zwei Teilen: Layoutansicht und Teilansicht. Die meisten Seiten des Websystems verfügen über dieselben Elemente: Logo, Menü, Fußleiste usw. Wir nennen die aus denselben Elementen bestehende Ansichtsdatei eine Layoutansicht. Im Allgemeinen erfordert das Websystem zwei Layouts, nämlich das Frontlayout und das Hintergrundlayout Das Front-End-Layout ist für Benutzer sichtbar, das Back-End-Layout für Administratoren. Teilansichten, die für jede Seite einzigartig sind, werden Teilansichten genannt.
kann anhand des obigen Bildes beschrieben werden. Wir fügen die Menüleiste, die Navigationsleiste und die Fußzeile in die Layoutdatei ein, dh alle Seiten verwenden eine Layoutdatei und dann hat jede Seite (Aktion) ihre eigene Teilansichtsdatei.
Als nächstes werfen wir einen Blick auf den Speicherpfad der Ansichtsdateien. WebApp kann den Ansichtsdateipfad und den Layoutdateipfad konfigurieren und außerdem eine Standardlayoutdatei für jeden Controller angeben. Die Ansichtsdatei jedes Controllers wird im von WebApp angegebenen Ansichtspfad mit dem Suffix des Namens und der Position des Controllers gespeichert Geben Sie an, welches Dokument verwendet wird.
WebApp-Mitgliedsattributbeschreibung
viewPath wird verwendet, um den Pfad der Ansichtsdatei anzugeben, alle Ansichtsdateien müssen sich unter dieser Datei befinden
Standard geschützt/Ansichten
layoutPath wird verwendet, um den Pfad der Layoutdatei anzugeben, alle Layouts Dateien müssen unter dieser Datei
default protected/views/layouts sein, unter diesem Pfad befinden sich: main.php, Column.php
viewPath wird verwendet, um den Pfad der Systemansichtsdatei anzugeben, der Standardwert protected/views/system
Layout gibt den Standardwert an. Die verwendete Layoutdatei ist der Standardwert.
Wenn beispielsweise die ModifyAction von PostController gerade ausgeführt wird und PostController die Verwendung des Spaltenlayouts angibt, ist die von dieser Anforderung verwendete Layoutdatei geschützt /views/layouts/column.php, und die Ansichtsdatei ist protected/views/post/modify.php.
In der Ansichtsebene gibt es zwei wichtige Konzepte: Client-Skriptkomponente und Widget.
Clientseitige Skriptkomponente: Diese Komponente wird zum Verwalten von clientseitigen Skripten (Javascript und CSS) verwendet. Sie können der Ansicht über diese Komponente Javascript und CSS hinzufügen. Die clientseitige Skriptkomponente verwaltet diese Codes in einer einheitlichen Form Art und Weise und korrigiert sie im letzten Schritt der Seitenausgabe. Clientseitige Skripte (Javascript und CSS) übernehmen das Rendern.
Widget: Auch als kleines Objekt bekannt, kann die Seite durch Widget modularisiert werden und als Controller ohne Layout betrachtet werden. Gemeinsame Seitenelemente können über Widgets wiederverwendet werden, z. B.: Menü-Widget, Listen-Widget, Tabellen-Widget, Paginierungs-Widget usw.
Das Rendern der Ansichtsebene erfolgt in drei Schritten:
Schritt 1: Rendern von Teilansichten, d. h. Rendern der eindeutigen Ansichtsfragmente jeder Seite
Schritt 2: Die Layoutansicht wird gerendert, d. h. die für jede Seite gemeinsamen Seitenelemente werden gerendert und die Ergebnisse von Schritt 1 werden in die Layoutansicht eingefügt. In Schritt 1 und Schritt 2 müssen Sie möglicherweise auch Widgets rendern, z. B. Kalender-Widgets, Menü-Widgets usw. In diesen beiden Schritten können Sie registrieren, welches JS und CSS Sie verwenden.
Schritt 3: JS und CSS rendern. Fügen Sie die in den ersten beiden Schritten registrierten JS- und CSS-Dateien zum angegebenen Speicherort der HTML-Seite hinzu.
Aufgrund der Ladereihenfolge führt dies dazu, dass die mit registerCssFile oder registerScriptFile importierte CSS- oder JS-Datei in einigen Ansichten vor der in der Layout-Ansichtsdatei registrierten CSS- oder JS-Datei angezeigt wird, was dazu führt, dass der Seitenstil und Die Verwirrung dynamischer Effekte, wie kann dieses Problem gelöst werden?
Tatsächlich ist es sehr einfach, das heißt, die Init-Methode in protected/components/Controller.php neu zu schreiben und die Methode zum Registrieren globaler JS- oder CSS-Dateien in der Layoutansicht in der Init-Methode zu definieren:
public function init(){ Yii::app()->clientScript->registerCoreScript('jquery'); Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl . '/css/style.css'); parent::init(); }
Dadurch wird sichergestellt, dass die Dateien jquery.js und style.css im Head-Tag vor allen anderen js- und css-Dateien definiert werden.
Das Obige ist der Inhalt von Yii Framework Analysis (9) – View Rendering Process. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!