Der erste Artikel endet damit, dass einige Verzeichnisse und Dateien angelegt wurden. Starten wir nun den zweiten Teil mit einer Erläuterung für was die Verzeichnisse und Dateien gedacht sind.
Im Verzeichnis "models" findet man nur die comments.php, der Grund dafür ist, dass wir bei about nur Text ausgeben möchten und keine Daten benötigen.
Dann noch "views", hier sind nun die Dateien zu finden, die für die Ausgabe zuständig sind. Also wieder about.php und comments.php.
Fehlt noch die übergeordnete Ablaufsteuerung, ich hatte im ersten Teil schon erwähnt das Joomla nicht wirklich viel macht, es wird die Datei admin.rdbs_comment.php eingebunden und dabei natürlich der enthaltene php-Code ausgeführt (bzw. interpretiert). In den alten Zeiten hat man hier meistens eine umfangreiche switch-Anweisung für die Steuerung gefunden. Jetzt wird hier fast nur der richtige Controller erzeugt und dann die execute-Methode aufgerufen.
1 |
<?php |
Warum so kompliziert? Also ich unterteile hier meine Komponente in unterschiedliche Bereiche. Im Grunde würde es ausreichen nur den Task zur Steuerung zu verwenden, das kann aber, wenn die Erweiterung größer wird, schnell unübersichtlich werden. Deshalb führe ich hier den Begriff Section ein. Um das zu verdeutlichen ein Beispiel:
Nehmen wir an, ich hätte eine Komponente mit der ich unterschiedliche Daten bearbeiten könnte, ganz abstrakt: daten1, daten2, daten3, …. datenN. Diese Daten kann man natürlich Editieren, Löschen, Anlegen. Wenn ich nur den Task zur Steuerung verwenden würde, müsste ich Aktion und Datentyp kombinieren, um das Ganze eindeutig zu halten. Das müsste ich dann auch in der Toolbar durchhalten, außerdem müsste ich den Task auseinanderpflücken um den passenden Controller zu erzeugen und last but not least muss man viel mehr tippen und kann die Dateien nicht einfach kopieren und verwenden.
Momentan ist das sicher oversized, aber die Komponente kann ja größer werden und wir sind dann vorbereitet:-).
Arbeiten wir uns jetzt durch die einzelnen Menüpunkte, zuerst "about". Das ist der einfachere von den beiden und man kann daran schon einiges verstehen. Die Datei about.php im Controller-Verzeichnis enthält den folgenden Programmcode:
1 |
<?php |
Zuerst wird die Basisklasse eingebunden, das passiert in der Zeile:
1 |
<?phpjimport( 'joomla.application.component.controller' );?
|
diese includiert die Datei controller.php aus dem Verzeichnis libaries/joomla/application/component (die Verzeichnisangabe startet im Joomla-Root-Verzeichnis). Damit kennt das System dann die Klasse JController. Von dieser leiten wir unsere eigene Controller-Klasse ab. Unsere eigene Klasse erbt so ein paar nützliche Methoden z.B. execute. Wer keinen blassen Schimmer von objektorientierter Programmierung hat der schaut sich bitte diese und vielleicht noch diese Seite an.
Eine weitere nützliche Sache ist, dass die Klasse (Jcontroller) eine Defaultmethode festlegt, macht man nichts ist das die Methode "display". Wählen wir den Menüpunkt "About" aus, wird der in der Datenbank für diesen gespeicherte link verwendet, hier ist das:
option=com_rdbs_comment§ion=about&task=about
Die Section im Link sorgt dafür, dass der About-Controller verwendet wird, über den Task "about" müsste die Methode about verwendet werden. Gibt es nicht(!), also zieht hier die Defaultmethode und display wird verwendet. Man kann also über die execute-Methode der Klasse eine Funktion innerhalb der Klasse ausführen. Gibt es keine passende Funktion wird die Defaultmethode benutzt. In unserer Klasse haben wir die Defaultmethode auch noch überladen (im Zusammenhang mit OOP spricht man hier von Polymorphie) und eine eigene display-Funktion definiert. Des Weiteren haben wir noch eine cancel-Funktion vereinbart, diese setzt aber nur den redirect und macht ansonsten nichts.
Was macht also unser Controller, aktuell bindet er die passende Viewdatei ein und ruft die Display-Methode auf. Die schauen wir uns jetzt an:
1 |
|
Zunächst wird die toolbar (RdbsCommentViewAbout::setToolbar();) erzeugt, früher hat man dafür die Dateien toolbar.KOMPONENTE.php und toolbar.KOMPONENTE.html.php. Diese sind nun überflüssig, die Ausgabe wird komplett in der Viewdatei erzeugt. Dann wird ein wenig java-script eingebunden und es folgt ein Formular. Dieses gibt den Text aus und setzt einige Felder, die wir für den Ablauf benötigen. Im Wesentlichen sind das "option" und "section", die "option" sorgt das wir wieder bei unserer Komponente landen und mit section=about wird dann wieder der About-Controller geladen. Die ganze Seite hat nur einen Cancel-Button, drückt man den, wird der Task auf Cancel gesetzt. Damit ruft der Controller dann die Cancel-Methode auf, der setzt den redirect und gut ist. Der wird dann in der übergeordneten Ablaufsteuerung ausgeführt und wir befinden uns wieder fast am Anfang.
Damit haben wir den ersten Menüpunkt abgearbeitet!
Den Code für die Toolbar liefere ich jetzt auch zum Abschluss:
1 |
<?php |
Den zweiten Menüpunkt machen wir dann in der nächsten Folge. Dann gibt es auch wieder ein Archiv mit den ganzen Dateien.


Kommentare
Bisher keine Kommentare
Neuen Kommentar hinzufügen
RDBS Comment entwickelt von Robert Deutz Business Solution