<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TYPO3 - Fulda, Kassel, Projekte, Online Marketing &#124; Web-aktiv Blog &#187; Model View Controller</title>
	<atom:link href="http://www.web-aktiv.com/blog/index.php/tag/model-view-controller/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.web-aktiv.com/blog</link>
	<description></description>
	<lastBuildDate>Fri, 25 Nov 2011 16:52:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>TYPO3: Meine ersten Erfahrungen mit Extbase und Fluid</title>
		<link>http://www.web-aktiv.com/blog/index.php/2010/03/16/typo3-meine-ersten-erfahrungen-mit-extbase-und-fluid/</link>
		<comments>http://www.web-aktiv.com/blog/index.php/2010/03/16/typo3-meine-ersten-erfahrungen-mit-extbase-und-fluid/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 07:17:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Extensionentwicklung]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Domain Driven Design]]></category>
		<category><![CDATA[Extbase Erfahrungsbericht]]></category>
		<category><![CDATA[Fluid]]></category>
		<category><![CDATA[Model View Controller]]></category>
		<category><![CDATA[Templates]]></category>

		<guid isPermaLink="false">http://blog.web-aktiv.com/?p=471</guid>
		<description><![CDATA[Get into the FLOW with Extbase and TYPO3 4.3
View more presentations from Sebastian Kurfürst.

Extbase, die moderne Art, Typo3 Extensions zu programmieren. Klingt gut, schließlich will ja jeder auf der Höhe der Zeit sein.  Extbase ist eine TYPO3 Extension, die schon jetzt die Möglichkeit bietet, Extensions im Stil der kommenden Version 5 von Typo3 und FLOW3 [...]]]></description>
			<content:encoded><![CDATA[<div id="__ss_1468640" style="width: 700px; float: left;"><strong style="display:block;margin:12px 0 4px"><a title="Get into the FLOW with Extbase and TYPO3 4.3" href="http://www.slideshare.net/skurfuerst/get-into-the-flow-with-extbase-and-typo3-43">Get into the FLOW with Extbase and TYPO3 4.3</a></strong><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=t3dd09-extbase-online-090521034410-phpapp02&amp;stripped_title=get-into-the-flow-with-extbase-and-typo3-43" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=t3dd09-extbase-online-090521034410-phpapp02&amp;stripped_title=get-into-the-flow-with-extbase-and-typo3-43" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/skurfuerst">Sebastian Kurfürst</a>.</div>
</div>
<p>Extbase, die moderne Art, Typo3 Extensions zu programmieren. Klingt gut, schließlich will ja jeder auf der Höhe der Zeit sein.  Extbase ist eine TYPO3 Extension, die schon jetzt die Möglichkeit bietet, Extensions im Stil der kommenden Version 5 von Typo3 und FLOW3 zu entwickeln. Stichworte sind hier MVC (Model-View-Controller) und DDD (Domain-Driven-Design). Ergänzt wird das Ganze noch mit Fluid, einer neuen intuitiven Template-Engine.  Aber ist das Neue auch das Bessere? Ich habe diese Frage für mich mit einem dicken <strong>JA</strong> beantwortet!</p>
<p>MVC ist zunächst ein Design Pattern, also eine bestimmte Art, seine Softwareentwicklung zu strukturieren. So werden bestimmte Bereiche zusammengefasst. Das Model enthält die Datenorganisation, der View erzeugt die Datenausgabe, der Controller steuert und verarbeitet die Datenströme zwischen Model und View.  Das sorgt für sauberen gut wartbaren Code, da z. B. im Controller kein HTML und im View keine Prozesslogik (PHP) enthalten ist. Das z. B. erleichtert auch die Arbeitsteilung, da der Designer nur den View bearbeitet und keine PHP Kenntnisse benötigt.</p>
<p>Hier meine Erfahrungen&#8230;</p>
<p><span id="more-471"></span><strong>Infos<br />
</strong>holte ich mir in den Fachartikeln der t3n:<br />
<a href="http://t3n.de/magazin/neues-mvc-framework-extbase-ebnet-weg-4x-flow3-zukunft-222472/" target="_blank">Die Zukunft der Extensionentwicklung</a>, von Jochen Rau<br />
<a href="http://t3n.de/magazin/neue-template-eingine-flow3-typo3-4x-fluid-templating-222468/" target="_blank">Fluid: Templating leicht gemacht</a>, von Sebastian Kurfürst<br />
<a href="http://t3n.de/magazin/praxis-workshop-einsteiger-extension-entwicklung-extbase-223999/">Extension-Entwicklung mit Extbase und Fluid</a>, von Patrick Lobacher<br />
und schaute mir die hervorragende Präsentation von Jochen Rau und Sebastian Kurfürst an (siehe oben).</p>
<p>Als nächstes besorgte ich mir die Dokumentation <a href="http://www.kaktusteam.de/index.php?id=mimis_blog&amp;tx_t3blog_pi1[blogList][showUidPerma]=68&amp;cHash=08d61155cd3ea8e8ea3f7d6efb51e16f" target="_blank">Extbase als PDF</a> und installierte extbase und fluid, beides ist bei Typo3 4.3 an Bord. Danach &#8220;wühlte&#8221; ich mich durch die o. g. Doku, was etwas mühsam war, denn sooo gut ist mein Englisch auch nicht. Immerhin zwingt es zum genaueren mehrmaligen Lesen, was für das Verständnis sehr förderlich ist.</p>
<p><strong>Weitere Vorbereitungen</strong><br />
In der Doku wird die Beispiel-Extension eines Blogs vorgestellt. Also habe ich mir <a href="http://typo3.org/extensions/repository/view/blog_example/current/" target="_blank">blog_example</a> und auch gleich eine leere <a href="http://typo3.org/extensions/repository/view/efempty/current/" target="_blank">efempty</a> als Arbeitsgrundlage installiert.<br />
Nachdem ich mein erstes Erfolgserlebnis mit der Blogextension hatte, wollte ich selbst gleich mal etwas eigenes auf die Beine stellen. Warum nicht eine ganz einfache Adressverwaltung mit nur einer Datenbanktabelle.</p>
<p><strong>Extbase Kickstarter &#8211; sowas gibt es auch schon?</strong><br />
Irgendwo habe ich darüber etwas gelesen &#8211; wo kriege ich das Ding jetzt her? Der Extbase Kickstarter ist in einer frühen Entwicklungsphase und im TER (noch) nicht verfügbar. Den Kickstarter gibts bei Typo3 Forge  als Subversion unter:<a href="http://forge.typo3.org/repositories/show/extension-extbase_kickstarter" target="_blank"> http://forge.typo3.org/repositories/show/extension-extbase_kickstarter</a><br />
Ach ja, herunterladen kann man das auch nicht so einfach, man braucht dafür einen SVN Client z. B. <a href="http://www.syntevo.com/smartsvn/index.html" target="_blank">SmartSVN</a>, <a href="http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA" target="_blank">Subclipse</a> (Eclipse Plugin, meine Wahl).</p>
<p>Wie der Kickstarter funktioniert, zeigt das Video von Sebastian Kurfürst:<br />
<a href="http://vimeo.com/9316473" target="_blank">Scaffolding width the Extbase Kickstarter</a></p>
<p><strong>Meine erste Extbase Extension in 5 Minuten</strong><br />
Gebannt hockte ich vor dem Video und erlebte, wie schnell man sich sein Datenmodel &#8220;zusammenklicken&#8221; kann. Also los, einen Extension Key vergeben und ein kleines Datenmodel &#8220;Company&#8221; mit den üblichen Eigenschaften: Name, Anschrift, PLZ, Ort, Telefon usw. erstellen.  Das Ganze abgespeichert und meine neue Extension im Ext-Manager vorgefunden. Dann installiert, es wurde eine Tabelle angelegt. Meine Extension als Inhaltselement in eine TYPO3 Seite eingebunden, die Seite als Ausgangspunkt gewählt. Über die Listenansicht habe ich dann einfach 2 Datensätze angelegt. Den Cache leeren und die Seite aufrufen und staunen!!!</p>
<p>Mir bot sich eine Liste, in der die Datensätze editiert, gelöscht und neu angelegt werden konnten. Die Liste und die Formulare waren schon da!</p>
<p><strong>Moment mal, was ist mit den Controllern und den Templates?</strong><br />
Die hatte ich doch noch gar nicht erstellt! Tja, das ist die Magie von Extbase, es bringt seine eigenen Standardcontroller und Ausgaben schon mit. Wie genial ist das denn?</p>
<p>Für eine schnelle erste Ausgabe meiner Extension brauche ich also nur das M von MVC. Alles weitere kann man sich dann entwickeln, eigene Controller, Templates usw. Das habe ich dann auch getan und zunächst nur die Templates mit Fluid gebastelt, die Standard-Controller genügten mir, vorerst. Ich habe mir die Templates in der Blog Extension angeschaut. Fluid is so intuitiv aufgebaut, dass ich mir meine einfachen Templates gleich ohne die Doku erstellen konnte, super!</p>
<pre lang="php" escaped="true">&lt;h1&gt;Firmen&lt;/h1&gt;
&lt;p&gt;&lt;f:link.action action="new"&gt;Neu&lt;/f:link.action&gt; | &lt;f:link.action action="index"&gt;Liste&lt;/f:link.action&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;th&gt;Kd-Nr&lt;/th&gt;&lt;th&gt;Firma&lt;/th&gt;&lt;th&gt;Anschrift&lt;/th&gt;&lt;th&gt;Telefon/Mobil&lt;/th&gt;&lt;th&gt;&lt;/th&gt;
 &lt;f:for each="{companies}" as="company"&gt;
 &lt;tr&gt;
 &lt;td&gt;{company.kdnr}&lt;/td&gt;
 &lt;td&gt;{company.name}&lt;/td&gt;
 &lt;td&gt;{company.address}&lt;br/&gt;{company.postalcode}&amp;nbsp;{company.city}&lt;br/&gt;&lt;/td&gt;
 &lt;td&gt;{company.phone}&lt;br/&gt;{company.mobile}&lt;/td&gt;
 &lt;td&gt;&lt;f:link.action action="edit" arguments="{company : company}"&gt;Bearbeiten&lt;/f:link.action&gt;&amp;nbsp;
 &lt;f:link.action action="delete" arguments="{company : company}"&gt;Löschen&lt;/f:link.action&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/f:for&gt;
&lt;/table&gt;</pre>
<p>Template für die Liste</p>
<p><strong>Extbase Namenskonvention</strong><br />
Sehr hilfreich ist auch die Namenskonvention von Extbase. Sie erleichtert die Orientierung erheblich. So bilden sich die Klassennamen aus der Verzeichnisstruktur:</p>
<pre lang="php" escaped="true">Tx_BlogExample_Controller_BlogController -
blog_example/Classes/Controller/BlogController.php</pre>
<p>Ähnliches gilt für die Controller Methoden und die zughörigen Templatenamen</p>
<pre lang="php" escaped="true">indexAction() - index.html
newAction() - new.html</pre>
<p><strong>Mein Fazit:</strong><br />
Extensions entwickeln macht mit Extbase richtig viel Spaß. Man kann sich auf die wesentlichen Dinge seiner Programmierung konzentrieren. Standardaufgaben wie z. B. Datenbankinteraktionen oder Formularvalidierungen stehen bereits zur Verfügung, so dass man sich damit nicht aufhalten muss. Dass man schon in 5 min. eine funktionierende Extension erstellen kann, die nach weiteren 5 min. für einfache Fluid-Templates ein eigenes Layout besitzt, ist einfach nur begeisternd. Meine erste Extbase Extension funktioniert und ich kann mich nun in Ruhe dem Studium der Dokumentationen widmen, um dann auch anspruchsvollere Projekte anzugehen.</p>
<p><img class="alignnone size-full wp-image-495" title="erfahrung-extbase1" src="http://blog.web-aktiv.com/wp-content/uploads/2010/03/erfahrung-extbase1.gif" alt="erfahrung-extbase1" width="494" height="176" /><br />
Ausgabe meiner ersten Extbase Extension mit einfachem Fluid Template</p>
<p><img class="alignnone size-full wp-image-498" title="erfahrung-extbase2" src="http://blog.web-aktiv.com/wp-content/uploads/2010/03/erfahrung-extbase2.gif" alt="erfahrung-extbase2" width="274" height="241" /><br />
Bearbeitungsansicht</p>
]]></content:encoded>
			<wfw:commentRss>http://www.web-aktiv.com/blog/index.php/2010/03/16/typo3-meine-ersten-erfahrungen-mit-extbase-und-fluid/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

