Beim Programmieren mit Yii2: Erste Schritte haben wir Yii2 lokal eingerichtet, eine Hello World-Anwendung erstellt, einen Remote-Server eingerichtet und Github zur Bereitstellung unseres Codes verwendet. In diesem Tutorial werden einige der grundlegenderen Konzepte von Yii behandelt, die sich auf die Implementierung des MVC-Frameworks beziehen: Modelle, Ansichten und Controller. Außerdem werden Layouts und die Anpassung von Navigationsmenüs und Bootstrap-Elementen erläutert.
Für diese Beispiele stellen wir uns vor, dass wir ein Framework für die Veröffentlichung einfacher Statusaktualisierungen erstellen, z. unser eigenes Mini-Twitter. Wir werden jedoch nicht so weit gehen, die Daten in einer Datenbank zu speichern. Ich werde das für das nächste Tutorial speichern, in dem die Gerüstfunktionen von Yii, Gii, erläutert werden.
Gii automatisiert und vereinfacht alles, was wir in diesem Lernprogramm tun. Es ist jedoch wichtig, die grundlegenden Konzepte durchzugehen und diese Aufgaben mindestens einmal manuell durchzuführen.
Was ist ein modell Wikipedia sagt: "A Modell- benachrichtigt seine zugehörigen Ansichten und Controller, wenn sich der Status geändert hat. Diese Benachrichtigung ermöglicht es den Ansichten, aktualisierte Ausgaben zu erzeugen, und die Steuerungen können den verfügbaren Befehlssatz ändern. "
Für mich repräsentieren Modelle oft die Konzepte dessen, was ich in der "äußeren" Welt baue. Wenn wir also über Statusaktualisierungen nachdenken, enthält das Statusmodell alle Eigenschaften einer Statusaktualisierung sowie alle Funktionen oder Methoden, die sich auf das Abfragen oder Ändern eines Status oder von Status beziehen.
Es empfiehlt sich, so viele Funktionen und Intelligenz wie möglich in Ihre Modelle zu integrieren. In der MVC-Praxis bauen Sie Modelle "schwer" und Steuerungen und Ansichten leicht. Yii bietet einige hervorragende Funktionen, die sich speziell auf die Art der Aktivitäten in der Web- und Anwendungsentwicklung beziehen, die das Modellieren vereinfachen - insbesondere bei Formularen und Datenbanken. Das meiste davon werden wir in späteren Tutorials untersuchen.
Lassen Sie uns unser Statusmodell erstellen. Für unsere Codierungsbeispiele können Sie das Git-Repository verwenden. Ich baue auf das auf, was wir im Tutorial "Erste Schritte" erstellt haben. Ich habe es hier als Referenz markiert. Das Github-Repository für das fertige Tutorial ist hier.
Wir erstellen Status.php in /hello/models/Status.php
. Um eine Statusnachricht zu veröffentlichen, müssen wir den Text der Nachricht vom Benutzer abholen. Wir erstellen auch ein Berechtigungsfeld für die Veröffentlichung öffentlich oder privat.
'Privat', selbst :: PERMISSIONS_PUBLIC => 'Öffentlich'); public function getPermissionsLabel ($ permissions) if ($ permissions == self :: PERMISSIONS_PUBLIC) return 'Public'; else return 'Privat'; ?>
Beachten Sie die Regeln-Funktion, die von Yiis Formularüberprüfung verwendet wird, um sicherzustellen, dass Benutzer die entsprechenden Informationen in jedes Feld eingeben. Yii verwendet JavaScript, um Formulare als Benutzertypen zu überprüfen.
Das getPermissions ()
Die von mir erstellte Funktion wird für die Dropdown-Listenelemente des Formulars verwendet.
Nun wollen wir einen Controller erstellen, mit dem der Benutzer die Textaktualisierungen erstellen und anzeigen kann.
Was ist ein Controller? Wikipedia sagt: "A Regler kann Befehle an das Modell senden, um den Zustand des Modells zu aktualisieren (z. B. Bearbeiten eines Dokuments). Es kann auch Befehle an die zugehörige Ansicht senden, um die Darstellung des Modells in der Ansicht zu ändern. "In einer typischen Yii-Webanwendung ruft ein URL-Pfad einer Seite einen Controller auf, um die Daten für die Seite mithilfe des Modells zu laden und die Seite unter Verwendung zu rendern die Aussicht.
Es ist am besten, verwandte Funktionen innerhalb eines einzelnen Controllers logisch zu gruppieren. Verschiedene Methoden des Controllers, so genannte Aktionen, implementieren jede Funktion. Diese entsprechen häufig bestimmten Seiten. Beispiel: http: // localhost: 8888 / hello / web / status / create ruft die Erstellungsaktion von StatusController auf, die wir erstellen werden.
Wenn Sie Status-Funktionen entwickeln, gruppieren Sie diese Funktionen in einer einzigen StatusController.php. Im Moment bauen wir einfach eine Create-Funktion.
Im / hallo / Controller /
, StatusController.php erstellen:
load (Yii :: $ app-> request-> post ()) && $ model-> validate ()) // in $ model erhaltene gültige Daten liefern $ this-> render ('view', ['model' = > $ model]); else // Entweder wird die Seite anfänglich angezeigt oder es gibt einen Überprüfungsfehler. return $ this-> render ('create', ['model' => $ model]); ?>
Formularerstellungsaktionen rufen normalerweise die Modelldaten auf und verzweigen sich danach, ob sie Teil einer POST-Operation sind oder nicht. Wenn nicht, wird das leere Formular angezeigt. Wenn sie gebuchte Daten erhalten, werden sie geprüft und verarbeitet. In unserem Fall bedeutet dies, dass die Ansichtsdatei gerendert wird.
Was ist eine ansicht Wikipedia sagt: "A Aussicht Fordert Informationen aus dem Modell an, das er verwendet, um eine Ausgabedarstellung für den Benutzer zu generieren. "In Yii verwendet die Ansicht eine PHP-ähnliche Vorlagensprache, um die Seitenausgabe in HTML zu rendern, wobei die vom Modell geladenen und vom Controller bereitgestellten Daten genutzt werden.
Ansichten befinden sich normalerweise in einem einzigen Ordner, der sich auf den zugehörigen Controller bezieht, z. Die StatusController-Ansichten befinden sich im Ansichten / Status
Mappe.
In Yii ist der Formcode normalerweise in einer sogenannten Teilansicht enthalten. Diese Dateien werden häufig mit einem Unterstrich-Präfix bezeichnet. Sie sollen in anderen Ansichten enthalten sein. Dadurch kann der eigentliche Formularcode von den Erstellungs- und Aktualisierungsseiten wiederverwendet werden.
Zuerst erstellen wir die Ansicht "Erstellen", die das Formular darstellt. Anschließend erstellen wir auch eine Ansichtsansicht, in der die von uns gepostete Statusaktualisierung angezeigt wird. In zukünftigen Tutorials, wenn wir mit einer Datenbank arbeiten, die Daten speichern und abrufen, wird dies etwas anders funktionieren.
Hier ist ein einfaches Beispiel von unserem /hello/views/status.view.php
Datei anzeigen, um veröffentlichte Daten zu rendern:
Ihre Statusaktualisierung
:
= Html::encode($model->text)?>
:
getPermissionsLabel ($ model-> Berechtigungen); ?>
Beachten Sie, dass eine Ansichtsdatei eine Mischung aus HTML und PHP ist. Wenn der Controller gebuchte Daten empfängt, zeigt er die obige Ansicht und zeigt an, welche Daten der Benutzer übermittelt hat.
Aber jetzt sprechen wir über Formulare und erstellen die Ansichtsdatei für das Erstellen von Formularen.
In der Webentwicklung verwenden wir täglich Formulare, um Daten vom Benutzer zu sammeln und häufig Benutzereingaben an eine Datenbank zu übermitteln. Yii bietet eine Vielzahl von Hilfscodes, um das Erstellen, Überprüfen, Sichern und Buchen von Daten aus Formularen zu vereinfachen. In Yii sind Formulare eine Art Ansicht.
Hier ein Beispielformular zum Erstellen einer Statusaktualisierung:
= $form->Feld ($ Modell, 'Text') -> TextArea (['Zeilen' => '4']) -> Label ('Statusaktualisierung'); ?> = $form->Feld ($ model, 'permissions') -> dropDownList ($ model-> getPermissions (), ['prompt' => '- Wählen Sie Ihre Berechtigungen -'])?>= Html::submitButton('Submit', ['class' => 'btn btn-primary'])?>
Das Yii2 ActiveForm-Widget wird verwendet, um HTML-Code für unsere Eingabefelder zu generieren. Beachten Sie, wie die Dropdown-Liste das Statusmodell aufruft getPermissions
Methode.
Wenn Sie auf die Schaltfläche Submit klicken, wird die Erstellungsaktion des StatusControllers wiederhergestellt. Wenn die gesendeten Daten empfangen werden, wird die Datei view.php anstelle der Formulardatei create.php wiedergegeben.
So wird die Ansichtsdatei angezeigt, wenn sie mit view.php gerendert wird:
Lassen Sie uns als Nächstes die globale Navigationsleiste mit Links zum Statuserstellungsformular aktualisieren.
Layouts sind die Vorlagen für die meisten äußeren Elemente einer Website, z. B. HTML-Wrapper, Header, Navigationsleiste und Fußzeile. Da diese für die meisten Seiten einer Website üblich sind, werden sie einmal im Layout erstellt und nicht überall im Code wiederholt.
Wenn du siehst \ Hallo \ Ansichten \ Layouts \ Main.php
, Sie können die Struktur des äußeren Layouts sehen:
beginPage ()?> = Html::csrfMetaTags() ?>= Html::encode($this->Titel)?> head ()?> beginBody ()?>'Mein Unternehmen', 'brandUrl' => Yii :: $ app-> homeUrl, 'options' => ['class' => 'navbar-inverses navbar-fixed-top',],]); echo Nav :: widget (['options' => ['class' => 'navbar-nav navbar-right'], 'items' => [['label' => 'Home', 'url' => [ '/ site / index']], ['label' => 'About', 'url' => ['/ site / about']], ['label' => 'Kontakt', 'url' => [ '/ site / contact']], Yii :: $ app-> user-> isGuest? ['label' => 'Login', 'url' => ['/ site / login']]]: ['label' => 'Logout ('. Yii :: $ app-> user-> identity-> Benutzername. ')', 'Url' => ['/ site / logout'], 'linkOptions' => ['data-method '=>' post ']],],]); NavBar :: end (); ?>endBody ()?> endPage ()?>= Breadcrumbs::widget([ 'links' => isset ($ this-> params ['breadcrumbs'])? $ this-> params ['breadcrumbs']: [],])?> = $content ?>
Ansichten stellen meistens die inneren Seitenkörper einer Website dar - was sich zwischen Kopf- und Navigationsleiste und dem Beginn der Fußzeile befindet. Sie werden gerendert, wenn das Layout widerhallt $ content
:
= Breadcrumbs::widget([ 'links' => isset ($ this-> params ['breadcrumbs'])? $ this-> params ['breadcrumbs']: [],])?> = $content ?>
Mit Yii können Sie mehrere Layouts pro Anwendung erstellen, obwohl dies nicht immer erforderlich ist. Das hängt von Ihrer Anwendung ab. Controller bieten ein Standardlayout, das Sie für jede Aktion außer Kraft setzen können. Wenn Ihre Controller verwandte Aktivitäten logisch gruppieren, verwendet die Benutzeroberfläche wahrscheinlich das gleiche Layout für alle Aktionen innerhalb eines Controllers.
Jetzt aktualisieren wir die Navigationsleiste, um ein Statusmenü mit der Aktion "Erstellen" aufzunehmen. Da Yii2 Bootstrap für seine Layouts und Stile verwendet, müssen wir ihm lediglich mitteilen, dass ein Bootstrap-Dropdown erstellt werden soll.
Aktualisieren Sie die Nav :: Widget
ein verschachteltes Array haben:
echo Nav :: widget (['options' => ['class' => 'navbar-nav navbar-right'], 'items' => [['label' => 'Home', 'url' => [ '/ site / index']], ['label' => 'Status', 'items' => [['' label '=>' Create ',' url '=> [' / status / create ']], ],], ['label' => 'About', 'url' => ['/ site / about']], ['label' => 'Kontakt', 'url' => ['/ site / contact ']], Yii :: $ app-> user-> isGuest? [' Label '=>' Login ',' url '=> [' / site / login ']]: [' label '=>' Logout ( '. Yii :: $ app-> Benutzer-> Identität-> Benutzername.') ',' Url '=> [' / site / logout '],' linkOptions '=> [' data-method '=>' posten ']],],]);
Folgendes sollten Sie sehen:
Da Sie nun ein bisschen wissen, wie die MVC-Architektur von Yii in der Praxis funktioniert, einschließlich Modelle, Ansichten, Steuerungen, Formulare und Layouts, erstellen wir ein Datenbankschema für Status und verwenden den Gii-Generator von Yii, um all dies automatisch zu erstellen uns. Die Dinge beginnen sich etwas schneller zu bewegen.
Wenn Sie wissen möchten, wann das nächste Yii2-Tutorial ankommt, folgen Sie mir @reifman auf Twitter oder besuchen Sie meine Tuts + Instructor-Seite. Meine Ausbilderseite enthält alle Artikel dieser Serie, sobald sie veröffentlicht sind.