Nun brauchen Sie also nur noch das Template, um einen neuen Eintrag anzulegen und schon ist das Gästebuch fertig:
Neuen Eintrag anlegen:
<f:form method="post" controller="Entry" action="create" name="newEntry" object="{newEntry}">
Title:<br/><f:form.textbox property="title" /><br />
Description:<br/>
<f:form.textarea property="description" rows="8" cols="46" /><br />
<f:form.submit class="submit" value="Submit"/>
</f:form>
Listing 10
Hier wird ein Formular aufgebaut und nach dem Abschicken auf die Create-Action verwiesen, die dann den Eintrag ablegt. Dabei werden lediglich zwei Eingabefelder benötigt: eine Textbox für den Titel und eine Textarea für die Beschreibung – das Datum wird immer aktuell im Model gesetzt.
Ergebnis
Wenn Sie nun das Plugin über den Extensionmanager installieren, werden Sie darauf aufmerksam gemacht, dass eine neue Tabelle angelegt werden muss. Bestätigen Sie dies und platzieren Sie das Plugin auf einer Seite. Wenn Sie diese Seite im Frontend aufrufen, können Sie direkt über den Link „Einen neuen Eintrag anlegen“ einen Gästebucheintrag hinzufügen. Sobald Sie das Formular ausgefüllt und abgeschickt haben, landen Sie wieder in der Index-Action und es werden Ihnen alle bisherigen Einträge angezeigt.
Das Ergebnis des Workshops: eine exemplarische Gästebuch-Extension, die auf Extbase und Fluid basiert.
Wie geht es weiter?
Nun, da Sie Gästebucheinträge haben, könnten Sie beispielsweise eine Delete-Action hinzufügen, die es ermöglicht, Einträge wieder zu löschen. Hier sollten Sie allerdings aufpassen, dass dies nicht jeder machen darf, sondern etwa nur der Administrator.
Momentan werden die Datensätze auf der Seite mit der ID=0 abgespeichert, was nicht sehr zweckmäßig ist, wenn man mehr als ein Gästebuch verwalten will. Dies lässt sich beispielsweise per TypoScript ändern. Man könnte zudem die E-Mail-Adresse zum Eintrageformular hinzufügen und einen Gravatar anzeigen, sofern ein solcher für die E-Mail-Adresse definiert ist.
Sie sehen: Es gibt zahlreiche Ideen und es lohnt sich, sie zu verfolgen – spielen Sie einfach damit. Weitere Impulse und Hilfe finden Sie unter [3], [4] und [5]. Viel Spaß in der Extbase/Fluid-Welt.





12 Antworten
von Waldo 20.02.2010 (14:52Uhr) 1.
Prima tut. Aber fehlt da nicht noch ein TS für das Einbinden des Plugins ?
von hauke 20.02.2010 (17:11Uhr) 2.
Also bei mir tut's das nicht, wenn ich einen Eintrag speichern will kommt die Fehlermeldung:
#1251730702: The value must be of type "Tx_Guestbook_Domain_Model_Entry", but was of type "array".
von Patrick Lobacher 21.02.2010 (15:34Uhr) 3.
Hi Hauke,
bitte schaue nochmal komplett über den Code und achte besonders darauf, dass Du ALLE Kommentare mit angegeben hast. Das ist die klassische Fehlermeldung, wenn Extbase den Typ nicht erkennen kann und diesen zieht sich Extbase aus den Annotations.
Patrick
von Patrick Lobacher 21.02.2010 (15:36Uhr) 4.
Hi Waldo,
einfach das Plugin als Content-Element auf einer Seite einbinden - das reicht.
Patrick
von hauke 21.02.2010 (16:16Uhr) 5.
Hab das Problem gelöst. Ich benutzte das Typo3Winstaller 4.3.1-Packet und da ist der PHP-Cache eAccelerator eingeschaltet und ich denke der schneidet die PHP-Komentare ab. Wenn man das Caching des eAccelerator abschaltet, funktioniert alles wie es soll...
hauke
von sieby 05.03.2010 (14:58Uhr) 6.
Hallo,
bei mir taucht das Problem auf, dass die Controller-Datei doppelt aufgerufen wird, was zur folge hat das die Klasse doppelt erzeugt wird.
Habe die Listings von der Website kopiert und von daher kann sich da kein Fehler eingeschlichen haben.
Kann mir vllt. Jemand sagen wodurch dieses Problem entsteht?
von TYPO3: Meine ersten Erfahrungen mit Extb… 14.03.2010 (16:37Uhr) 7.
[...] der Extensionentwicklung, von Jochen Rau Fluid: Templating leicht gemacht, von Sebastian Kurfürst Extension-Entwicklung mit Extbase und Fluid, von Patrick Lobacher und schaute mir die hervorragende Präsentation von Jochen Rau und Sebastian [...]
von Eddy 23.04.2010 (17:11Uhr) 8.
Leider bekomme ich die Geschichte nicht zum Laufen. Nach der Installation des Plugins wird beim Seitenaufruf folgender Fehler ausgeworfen:
#1247602160: Table 'extbase.tx_guestbook_domain_model_entry' doesn't exist
Der Code in der ext_tables.sql ist korrekt. Merkwürdig ist jedoch, das im Extension Manager, bei Klick auf Guestbook, eine Aktualisierung der entsprechenden Tabelle gefordert wird. Nach Durchführung der Aktualisierung erscheint jedoch wieder die o.a. Fehlermeldung und der Extension Manager möchte wiederum eine Aktualisierung der Tabelle.
Habe ich etwas übersehen?
von Eddy 23.04.2010 (18:08Uhr) 9.
Nach anfänglicher Tipparbeit habe ich mich nun entschlossen, den Code per Copy&Pace zu verwenden. Uns siehe da, es tut. (So kann man natürlich auch Zeit tot machen :-) )
Wahrscheinlich irgendwo ein Synthaxfehler.
von Christian 22.03.2011 (08:42Uhr) 10.
Woran kann es liegen das die Action "Add" nicht mehr aufgerufen wird? Zwischenzeitlich hatte es funktioniert, dann hab ich's anscheinend verbogen. Hab die Extension per Copy&Paste noch einmal aufgebaut, aber die Action, bzw. das Formular wird nicht angezeigt.
von Patrick Lobacher 22.03.2011 (08:54Uhr) 11.
Das kann natürlich viele Gründe habe - wenn immer nur die Liste der Einträge kommt, fehlt wahrscheinlich der Eintrag in der ext_localconf.php oder der Link wurde falsch generiert. Zudem ist das Caching bei Extbase sehr intensiv - daher am Besten einmal alle Cache-Tabellen händisch leeren (inbesondere den Extbase Reflection Cache). Eventuell arbeitet das Beispiel auch nicht mehr mit der aktuellen Version 1.3 von Extbase/Fluid zusammen - das habe ich noch nicht ausporbiert...
von Christian 22.03.2011 (10:54Uhr) 12.
Habe jetzt alle möglichen Cache-Tabellen geleert. Letztendlich hat aber geholfen, die Seite mit dem Plugin zu löschen und eine neue Seite mit neu eingebundenen Plugin anzulegen.