Lektion 6.1: Wie Module und Views funktionieren
Jede Seite, die keine Inhaltsseite ist, ist eine Modul-View: /user/login, /setup/cache, /content/edit/12.
Selbst Inhaltsseiten sind die View content/view. Diese Lektion erklärt, wie aus einer Adresse ein Aufruf einer View
wird, was eine module.php deklariert und wie eine View ihr HTML an das Pagelayout übergibt. Sie bereitet Lektion 6.2
vor, in der die Teilnehmenden eine eigene View schreiben.
Auf einen Blick
| Kurs | Entwickler |
| Modul | Modul 6: Module und Views |
| Dauer | 45 Minuten (25 Präsentation, 20 Übung) |
| Niveau | Fortgeschrittene |
| Zielgruppe | Entwickler |
| Voraussetzungen | Lektion 1.1 und Modul 5 |
Lernziele
Nach dieser Lektion können die Teilnehmenden:
- eine Adresse in Siteaccess, Modul, View, geordnete Parameter und ungeordnete Parameter zerlegen;
- Einträge von
$ViewListin einermodule.phplesen:script,params,unordered_params,functions,single_post_actions; - den Code einer Kernel-View in
kernel/private/classes/views/<module>/<view>.phpfinden; - das Array
$Resultbeschreiben, das eine View zurückgibt, und wie das Pagelayout$module_result.contentanzeigt.
Hinweise für Trainer
So präsentieren Sie es
Quellen: Den Code lesen, den Sie bereits haben, Technik 2 und Befehle, Cronjob-Teile und Modul-Views als Klassen.
Eine Adresse (4 Minuten).
/admin/content/view/full/2/(offset)/20: Siteaccessadmin, Modulcontent, Viewview, geordnete Parameterfullund2(inmodule.phpmit den NamenViewModeundNodeID), ungeordneter Parameteroffsetmit dem Wert20.module.php(6 Minuten). Zeigen Sie$ViewList['view']inkernel/content/module.php:$ViewList['view'] = array( 'functions' => array( 'read' ), 'default_navigation_part' => 'ezcontentnavigationpart', 'script' => 'view.php', 'params' => array( 'ViewMode', 'NodeID' ), 'unordered_params' => array( 'language' => 'Language', 'offset' => 'Offset', ... ) );functionsnennt die Richtlinie, die ein Benutzer braucht (content/read);single_post_actionsordnet einer gedrückten Schaltfläche einen Aktionsnamen zu.$FunctionListam Ende listet die Richtlinienfunktionen und ihre Einschränkungen auf.Skript oder Klasse (4 Minuten).
kernel/section/view.phpbesteht aus einer Zeile:return \Exponential\View\Kernel\Section\View::main( __FILE__, get_defined_vars() );. Der Code ist nachkernel/private/classes/views/section/view.phpumgezogen. Views von Erweiterungen können einfache Skripte oder Klassen sein; beides funktioniert.$Result(4 Minuten). Eine View setzt$Result['content'](das HTML, meist aus einem Template) und$Result['path'](die Brotkrumennavigation). Das Pagelayout gibt den Inhalt mit{$module_result.content}aus.Navigationsteile (2 Minuten).
default_navigation_partentscheidet, welcher Reiter der Administration hervorgehoben wird.
Häufige Fragen
Woher kommen die $Params? Der Modul-Runner füllt $Params mit den benannten geordneten Parametern und
$Params['UserParameters'] mit den ungeordneten.
Kann eine Erweiterung einem Kernel-Modul eine View hinzufügen? Ja, mit Bedacht: Modul-Override durch Erweiterungen erklärt, wie eine Erweiterung Views und Templates eines Moduls bereitstellt oder überschreibt.
Warum wurden die Kernel-Views zu Klassen? Damit man sie über Einstellungen und Ereignisse ersetzen und auf sie reagieren kann, ohne Kernel-Dateien zu bearbeiten (siehe die Spezifikation oben).
Stolperfallen
- Logik in der einzeiligen Einstiegsdatei suchen. Folgen Sie dem Klassennamen nach
kernel/private/classes/views/. - Modulname und Ordner verwechseln. Der Ordnername unter
modules/ist der Modulname in der Adresse. - Den Siteaccess-Teil vergessen. Auf einer Website, die über den Pfad erkannt wird, ist der erste Teil der Adresse der Siteaccess, nicht das Modul.
Praktische Übung
Auf der Entwicklungsinstallation, in einer Shell.
- Zeigen Sie den Eintrag
viewan:grep -n "ViewList\['view'\]" -A10 kernel/content/module.php. - Suchen Sie den Eintrag für
/user/login:grep -n "ViewList\['login'\]" -A10 kernel/user/module.php. Notieren Sie sein Skript, seine Parameter und ob erfunctionsnennt. - Öffnen Sie die Einstiegsdatei
kernel/user/login.phpund verfolgen Sie die aufgerufene Klasse bis zu ihrer Datei unterhalb vonkernel/private/classes/views/. - Zählen Sie die View-Klassen des Kernels:
find kernel/private/classes/views -name "*.php" | wc -l. - Listen Sie die Richtlinienfunktionen des Moduls section auf:
grep -n "FunctionList\[" kernel/section/module.php. - Öffnen Sie im Browser
/content/view/full/2/(offset)/10auf Ihrer Website und in der Administration; achten Sie darauf, wie sich der Siteaccess-Teil unterscheidet. - Finden Sie heraus, wo das Standard-Design das Ergebnis ausgibt (
pagelayout.tplbindetpage_mainarea.tplein):grep -rn "module_result.content" design/standard/templates/page_mainarea.tpl. - Schreiben Sie die fünf Teile der Adresse
/admin/content/view/full/2/(offset)/20auf Papier.
Erwartetes Ergebnis
- Schritt 2: die View
loginmit ihrem Skript und ihren Post-Aktionen. - Schritt 3: Die Teilnehmenden nennen die Klassendatei, zum Beispiel
kernel/private/classes/views/user/login.php. - Schritt 7: die Zeile, in der das Pagelayout das Ergebnis der View ausgibt.
- Schritt 8: Siteaccess
admin, Modulcontent, Viewview, Parameterfullund2, ungeordnetoffset=20. - Der Trainer bespricht Schritt 8 mit der ganzen Gruppe.
Quiz
- Welcher Teil von
/content/view/full/2ist die View? - Welcher Schlüssel von
$ViewListnennt die Richtlinie, die ein Benutzer für die View braucht? A.scriptB.paramsC.functionsD.default_navigation_part - Was wird innerhalb einer View aus
/(offset)/20? - Welcher Schlüssel von
$Resultenthält das HTML der View? - Wo liegt der Code der Kernel-View
section/viewseit Exponential 6?
Antworten
view(das Modul istcontent).- C.
functions, zum Beispielarray( 'read' ). - Ein ungeordneter Parameter:
$Params['UserParameters']['offset']und$view_parameters.offsetin den Templates von Inhalts-Views. $Result['content'].- In
kernel/private/classes/views/section/view.php, KlasseExponential\View\Kernel\Section\View.
Weiterführende Literatur
- Den Code lesen, den Sie bereits haben.
- Befehle, Cronjob-Teile und Modul-Views als Klassen.
- Modul-Override durch Erweiterungen.
Verwandte Seiten
- Modul 6: Module und Views
- Entwickler: Kursüberblick
- Trainer: hier beginnen
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.