SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 1 / 34© SpeedPartner GmbH
Extbase/Fluid
Kennenlernen
und ausprobieren
(Eine Einführung)
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 2 / 34© SpeedPartner GmbH
Inhalte
● Einführung/Überblick
● Fluid ohne Extbase
● Extbase
● Konventionen (Naming, phpdoc, ...)
● Vom Pfad abweichen
● Stolperfallen
● Einstieg mit dem Extbase-Kickstarter
● Links / Hilfen
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 3 / 34© SpeedPartner GmbH
Über mich
● Stefan Neufeind
● Aus Neuss
● Tätig für SpeedPartner GmbH, ein Internet-Service-Provider (ISP)
(Consulting, Entwicklung, Administration)
● Individuelle TYPO3-Entwicklungen
● Hosting, Housing, Managed Services
● Domains / Domain-Services
● xDSL, IP-Upstream, IPv6
● Aktive Mitarbeit im Community-Umfeld (PHP/PEAR, TYPO3, Linux)
● Mitglied im TYPO3 Certification Team
● Freier Autor für z.B. t3n, iX, Internet World, ...
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 4 / 34© SpeedPartner GmbH
Einführung/Überblick
Ziele des Vortrags:
● Einstieg geben
● Grober Überblick
● Aufbauend auf Standard-Beispiel „blog_example“
● Wichtigsten Konventionen erläutern
● Standard-Fehler vermeiden
● Berührungsängste nehmen
● Spaß an Arbeit mit Extbase/Fluid vermitteln
● Vorbereitet sein für Umstieg auf FLOW3
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 5 / 34© SpeedPartner GmbH
Einführung/Überblick
Hintergrund zur Entwicklung:
● „Klassische“ TYPO3-Architektur weit verbreitet
● Gemeinsame Basis für Extensions („tslib_pibase“)
● Teilweise sehr unterschiedliche Ansätze für Aufbau von Extensions
● Templating in Extensions überwiegend Marker-basiert
● Zusammengesetzt aus Platzhaltern (Markern) und Blöcken (Subparts)
● In 2006 Entscheidung TYPO3 „neu zu schreiben“
● Aufteilung in Framework (FLOW3) und das eigentliche CMS (TYPO3 v5)
● Moderne Architektur und Software-Entwicklungs-Paradigmen
● Nutzung aktueller Möglichkeiten (PHP 5.2+)
● Domain-driven design, MVC (Model-View-Controller)
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 6 / 34© SpeedPartner GmbH
Einführung/Überblick
Zusammenhang und Zusammenarbeit TYPO3v4 und TYPO3v5:
● Okt. 2008: „Transition Days“ in Berlin
● Verabschiedung des „The Berlin Manifestio“
● Beschluss TYPO3 v4 weiterzuentwickeln (auch nach TYPO3 v5-Release)
● Übergang TYPO3 v4 zu TYPO3 v5 ermöglichen/vereinfachen
● War für TYPO3 v4 Grundlage zur Entscheidung für
● Eine moderne, neue Basisklasse als Ersatz für tslib_pibase: Extbase
● Neue, flexible und erweiterbare Template-Engine: Fluid
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 7 / 34© SpeedPartner GmbH
Einführung/Überblick
Neuer Ansatz für TYPO3 v4-Extensions:
● Extbase-Framework:
● Konzepte und Lösungen von FLOW3 für TYPO3 v4.3+ verfügbar machen
● Struktur der Extensions, Konventionen, Schnittstellen (APIs) weitgehend gleich
● Leichten Übergang zu FLOW3/TYPO3v5 ermöglichen
(Anpassungen erforderlich, jedoch Architektur und Schnittstellen ähnlich)
● Fluid für FLOW3 Basis ist Basis von Fluid für TYPO3v4
● Fluid-Team entwickelte in wenigen Tagen ein „Backporter“-Tool
● Ermöglicht Fluid-Code von TYPO3v4 und FLOW3 synchron zu halten
● Beta von Extbase und Fluid im Herbst 2009
● Aufnahme in TYPO3 Core mit Veröffentlichung von TYPO3 4.3.0 (Nov. 2009)
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 8 / 34© SpeedPartner GmbH
Fluid ohne Extbase
Wechseln von Markern zu Fluid?
● Marker-Konzept: einfach und „bekannt“
● Jedoch fast zu „minimalistisch“
● Umfangreiche Templates erfordern teils sehr kreative Lösungen (Schleifen, ...)
● Unterschiedliche Lösungsansätze mit Stärken/Schwächen
● Umsetzungen in manchen Fällen fehleranfällig
● Fluid: strukturiert, flexibel, erweiterbar
● Übersichtlicher Aufbau
● Kontrollstrukturen: Verzweigungen / Schleifen
● Objektorientierung
● Erweiterbarkeit (ViewHelper, ...)
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 9 / 34© SpeedPartner GmbH
Fluid ohne Extbase
Einfaches Beispiel mit Markern:
● HTML-Basis / Ziel:
● Im Template:
<ul>
<li style=“background:red“>Name1</li>
<li style=“background:green“>Name2</li>
<li style=“background:red“>Name3</li>
</ul>
<!-- ###NAMELIST### begin -->
<ul>
<!-- ###ROW_ODD### begin -->
<li style="background:red">###NAME###</li>
<!-- ###ROW_ODD### begin -->
<!-- ###ROW_EVEN### begin -->
<li style="background:green">###NAME###</li>
<!-- ###ROW_EVEN### begin -->
</ul>
<!-- ###NAMELIST### end -->
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 10 / 34© SpeedPartner GmbH
Fluid ohne Extbase
Einfaches Beispiel mit Markern:
● Extension-Code (Auszug):
$templateCode = $this->cObj->fileResource('EXT:' . $this->extKey . '/res/marker.htm');
$template = array();
$template['namelist'] = $this->cObj->getSubpart($templateCode,'###NAMELIST###');
$template['row_odd'] = $this->cObj->getSubpart($template['namelist'],'###ROW_ODD###');
$template['row_even'] = $this->cObj->getSubpart($template['namelist'],'###ROW_EVEN###');
$contentList = '';
$odd = true;
foreach($names as $name) {
if($odd) {
$contentList .= $this->cObj->substituteMarker($template['row_odd'], '###NAME###', $name);
} else {
$contentList .= $this->cObj->substituteMarker($template['row_even'],'###NAME###',$name);
}
$odd = ($odd == false);
}
$content = $template['namelist'];
$content = $this->cObj->substituteSubpart($content, '###ROW_ODD###', '');
$content = $this->cObj->substituteSubpart($content, '###ROW_EVEN###', $contentList);
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 11 / 34© SpeedPartner GmbH
Fluid ohne Extbase
Einfaches Beispiel mit Fluid:
● HTML-Basis / Ziel:
● Im Template:
<ul>
<li style=“background:red“>Name1</li>
<li style=“background:green“>Name2</li>
<li style=“background:red“>Name3</li>
</ul>
<ul>
<f:for each="{names}" as="name">
<f:cycle values="{0: 'red', 1: 'green'}" as="alternate">
<li style="background:{alternate}">{name}</li>
</f:cycle>
</f:for>
</ul>
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 12 / 34© SpeedPartner GmbH
Fluid ohne Extbase
Einfaches Beispiel mit Fluid:
● Extension-Code (Auszug):
$view = t3lib_div::makeInstance('Tx_Fluid_View_TemplateView');
$controllerContext =
t3lib_div::makeInstance('Tx_Extbase_MVC_Controller_ControllerContext');
$controllerContext->setRequest(t3lib_div::makeInstance('Tx_Extbase_MVC_Request'));
$view->setControllerContext($controllerContext);
$template = t3lib_extMgm::extPath($this->extKey) . 'res/marker_fluid.htm';
$view->setTemplatePathAndFilename($template);
$view->assign('names', $names);
$content = $view->render();
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 13 / 34© SpeedPartner GmbH
Extbase
Konzept:
● Domain-driven design:
● Umfeld der Problemstellung
● Gemeinsame Sprache (Begrifflichkeiten, ...)
● Objekt-Modell mit Eigenschaften, Funktionalitäten und Beziehungen
● Model-View-Controller (MVC):
● Model: kapselt Anwendungslogik und -daten sowie Zugriffs- und Speicherlogik
● Controller: stellt nach außen sichtbare, aufrufbare Funktionalitäten bereit,
koordiniert Funktionalität welche im Model implementiert wird
● View: Ausgabelogik, Darstellung der Daten (bei Extbase in der Regel mit Fluid)
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 14 / 34© SpeedPartner GmbH
Extbase
Konventionen:
● Klassen: UpperCamelCase
● Methoden & Variablen: lowerCamelCase
● Bildung von Namen
● Für Klassennamen: Tx_[ExtensionName]_[Ebene1]_[Ebene2]...
z.B. Tx_BlogExample_Controller_BlogController, Tx_BlogExample_Domain_Model_Blog
● Verzeichnisse/Dateien: einzelne Bestandteile durch Verzeichnisse abgebildet
z.B. Classes/Controller/BlogController.php
oder Classes/Domain/Model/Blog.php
● Datenbank: lower-case mit Unterstrichen, z.B. tx_blogexample_domain_model_blog
Struktur:
● Objekte sind in einem „Repository“ gesammelt, welches die Verwaltung übernimmt
● Persistence-Manager übernimmt Speicherung / Rekonstruktion von Objekten
● Optional: Validatoren übernehmen die Prüfung von Objekten und Werten
● Ausgabe aus Rahmen (Layout), Template und Blöcke (Partials) zusammengesetzt
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 15 / 34© SpeedPartner GmbH
Extbase
Überblick über Standard-Beispiel „blog_example“:
● Besteht aus:
● Ansatz: Blogs enthalten Posts, welche mit Kommentaren/Tags versehen sein können
● Funktionalitäten z.B. eines Blog-Post (siehe PostController):
Listenansicht (Index), Einzelansicht, Erzeugen (+ Speichern), Editieren (+ Updaten), Löschen
Blog
Post Author
Administrator
Comment Tag
1
1*
*
0..*
0..* 0..*
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 16 / 34© SpeedPartner GmbH
Extbase
... Live-Demo„blog_example“ ...
To-Do:
● Installation
● Einbindung in eine Seite
● Anlegen von Storage Folder und Einträgen
● Funktionstests
Stolperfallen bei ersten Schritten:
● Statische Konfiguration inkludieren
● Storage Folder angeben
● Anlagen eines „Administrator“ und einer „Person“ per Backend
● Person muss einen „name“ (statt „username“) erhalten, sonst kein Dropdown-Eintrag sichtbar
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 17 / 34© SpeedPartner GmbH
Extbase
Verzeichnis-/
Datei-Struktur:
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 18 / 34© SpeedPartner GmbH
Extbase
Konfigurationen / Abhängigkeiten:
● Üblicherweise Nutzung von Konventionen statt expliziten Angaben
(„Convention over configuration“)
● Alternativ explizite Konfiguration (Tabellennamen, Spaltennamen, Abhängigkeiten)
● Methodenparameter („Type Hinting“)
● TypoScript
● Standardmäßig unter „Configuration/TypoScript“, siehe constants.txt / setup.txt
● Für Extension: unterhalb „plugin.tx_ourextension“
● Für alle Extensions: unterhalb „config.tx_extbase“
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 19 / 34© SpeedPartner GmbH
Extbase
Konfigurationen / Abhängigkeiten:
● TCA
● Standardmäßig unter „Configuration/TCA“ in „tca.php“
● phpdoc (!)
● Angabe von Typen für Eigenschaften (Models)
● in Verbindung mit TCA somit Angabe der Verbindungen zwischen Objekten
● Validatoren für Objekte und Eigenschaften sowie „@dontvalidate“
● Lade-/Verarbeitungsanweisungen („@lazy“, „@cascade remove“)
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 20 / 34© SpeedPartner GmbH
Extbase
Konfigurationen / Abhängigkeiten:
class Tx_BlogExample_Domain_Model_Blog extends Tx_Extbase_DomainObject_AbstractEntity {
/**
* The blog's title.
*
* @var string
* @validate StringLength(minimum = 1, maximum = 80)
*/
protected $title = '';
/**
* The posts of this blog
*
* @var Tx_Extbase_Persistence_ObjectStorage<Tx_BlogExample_Domain_Model_Post>
* @lazy
* @cascade remove
*/
protected $posts;
/**
* Adds a post to this blog
*
* @param Tx_BlogExample_Domain_Model_Post $post
* @return void
*/
public function addPost(Tx_BlogExample_Domain_Model_Post $post) {
$this->posts->attach($post);
}
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 21 / 34© SpeedPartner GmbH
Extbase
Konfigurationen / Abhängigkeiten:
class Tx_BlogExample_Controller_PostController extends Tx_Extbase_MVC_Controller_ActionController {
// ...
/**
* Displays a form for creating a new post
*
* @param Tx_BlogExample_Domain_Model_Blog $blog The blog the post belogs to
* @param Tx_BlogExample_Domain_Model_Post $newPost Fresh post object as basis for
rendering
* @return string An HTML form for creating a new post
* @dontvalidate $newPost
*/
public function newAction(Tx_BlogExample_Domain_Model_Blog $blog,
Tx_BlogExample_Domain_Model_Post $newPost = NULL) {
$this->view->assign('authors', $this->personRepository->findAll());
$this->view->assign('blog', $blog);
$this->view->assign('newPost', $newPost);
}
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 22 / 34© SpeedPartner GmbH
Extbase
Konfigurationen / Abhängigkeiten:
class Tx_BlogExample_Controller_PostController extends Tx_Extbase_MVC_Controller_ActionController {
// ...
/**
* Creates a new post
*
* @param Tx_BlogExample_Domain_Model_Blog $blog The blog the post belogns to
* @param Tx_BlogExample_Domain_Model_Post $newBlog Fresh post object, not yet
added to repo
* @return void
*/
public function createAction(Tx_BlogExample_Domain_Model_Blog $blog,
Tx_BlogExample_Domain_Model_Post $newPost) {
$blog->addPost($newPost);
$newPost->setBlog($blog);
$this->flashMessages->add('Your new post was created.');
$this->redirect('index', NULL, NULL, array('blog' => $blog));
}
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 23 / 34© SpeedPartner GmbH
Extbase
Ausgaben:
● Per Fluid
● Verschiedene Ausgabetypen („format“) möglich
● standardmäßig „HTML“ mit Endung „.html“
● Alternativ z.B. „txt“, „json“ oder „pdf“ möglich
● Rahmen (Layout), z.B. Resources/Private/Layouts/default.html
<h1>Blog Example</h1>
<hr />
<f:renderFlashMessages class="tx-extbase-flash-message" />
<f:render section="content" />
<hr />
<p>&copy; TYPO3 Association</p
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 24 / 34© SpeedPartner GmbH
Extbase
Ausgaben:
● Template, z.B. Resources/Private/Templates/Post/new.html
<f:layout name="default" />
<f:section name="content">
<div class="csc-header csc-header-n1">
<h1 class="csc-firstHeader">Create a new Post</h1></div>
<f:render partial="formErrors" arguments="{for: 'newPost'}" />
<f:form method="post" controller="Post" action="create" name="newPost"
object="{newPost}" arguments="{blog : blog}">
<label for="author">Author <span class="required">(required)</span></label><br />
<f:form.select property="author" options="{authors}" optionValueField="uid"
optionLabelField="fullName"><select><option>dummy</option></select>
</f:form.select><br />
<label for="title">Title <span class="required">(required)</span></label><br />
<f:form.textbox property="title" /><br />
<label for="content">Content <span class="required">(required)</span></label><br />
<f:form.textarea property="content" rows="8" cols="46" /><br />
<f:form.submit class="submit" value="Submit"/>
</f:form>
</f:section>
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 25 / 34© SpeedPartner GmbH
Extbase
Ausgaben:
● Blöcke (Partials), z.B. Resources/Private/Partials/formErrors.html
<f:form.errors for="{for}">
<div class="error">
{error.message}
<f:if condition="{error.propertyName}">
<p>
<strong>{error.propertyName}</strong>:
<f:for each="{error.errors}" as="errorDetail">
{errorDetail.message}
</f:for>
</p>
</f:if>
</div>
</f:form.errors>
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 26 / 34© SpeedPartner GmbH
Extbase
... Live-Demo„blog_example“ ...
To-Do:
● Funktionstests
● Linkerzeugung (Fluid-ViewHelper)
● Validatoren
● Fehlerausgaben
● Redirects
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 27 / 34© SpeedPartner GmbH
Vom Pfad abweichen
Beispiele zur Erweiterung / Anpassung
von Extbase/Fluid siehe weitere
Präsentationen zum Thema auf unserer Website:
http://talks.speedpartner.de/
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 28 / 34© SpeedPartner GmbH
Vom Pfad abweichen
Kleinere Standard-Extbase-Stolperfallen:
● @lazy im phpdoc benötigt, sofern sich Objekte gegenseitig referenzieren
● Ansonsten erfolgt der automatische Ladevorgang in einer Endlosschleife
● @dontvalidate im phpdoc angeben bei newAction()
● Speicherung erfolgt (üblicherweise) über separate Action, welche validiert
● Wenn Validierung fehlschlägt, wird die vorherige Action wieder aufgerufen (newAction())
● Endlosschleife sofern diese Fehleingaben zur Wiedervorlage auch validieren würde
● Falls Einträge nicht gefunden werden Storage-PID kontrollieren
1.Ausgangspunkt im Formular des Plugins
2.TypoScript-Setup „plugin.tx_extensionname.persistence.storagePid (kommaseparierte Liste)
3.TypoScript-Setup „config.tx_extbase.persistence.storagePid“ (kommaseparatierte Liste)
4.Auf Wurzelseite des Seitenbaums
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 29 / 34© SpeedPartner GmbH
Vom Pfad abweichen
Kleinere Standard-Extbase-Stolperfallen:
● Falls Einträge nicht gefunden werden Storage-PID kontrollieren
1.Ausgangspunkt im Formular des Plugins
2.TypoScript-Setup „plugin.tx_extensionname.persistence.storagePid (kommaseparierte Liste)
3.TypoScript-Setup „config.tx_extbase.persistence.storagePid“ (kommaseparatierte Liste)
4.Auf Wurzelseite des Seitenbaums
● Falls Einträge an falsche Stelle geschrieben werden Storage-PID kontrollieren
1.TypoScript-Setup „plugin.tx_extensionname.persistence.classes.
VollerKlassenName.newRecordStoragePid“ (einzelne PID)
2.TypoScript-Setup „config.tx_extbase.persistence.classes.
VollerKlassenName.newRecordStoragePid“ (einzelne PID)
3.Ansonsten je erstes Objekt aus o.g. Punkten (1-4) von Lesereihenfolge,
letztlich also Wurzelseite des Seitenbaums
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 30 / 34© SpeedPartner GmbH
Extbase-Kickstarter
Funktionalitäten:
● Basis-Gerüst für Extension erstellen
● Models, Repositories und Controller erstellen
● Basis-Funktionalitäten: CRUD (Create, Read, Update, Delete)
● Bearbeiten von erstellten Extensions (derzeit Beta!)
Erste Schritte:
● Kickstarter aus git-Repository auschecken (derzeit noch kein Download-Paket)
● Installieren
● Basis-Daten für Extension vergeben
● Objekte und Eigenschaften festlegen
● Beziehungen definieren
● Neue Extension speichern und installieren
● Plugin einbinden
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 31 / 34© SpeedPartner GmbH
Extbase-Kickstarter
Kurze Live-Demonstration
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 32 / 34© SpeedPartner GmbH
Links / Hilfen
● viewhelpertest: https://svn.typo3.org/TYPO3v4/CoreProjects/MVC/viewhelpertest/
● extbase_kickstarter: http://forge.typo3.org/projects/extension-extbase_kickstarter/
Mittlerweile von SVN auf git gewechselt! Aktuellen Checkout erstellen über:
git clone git://git.typo3.org/TYPO3v4/Extensions/extbase_kickstarter.git extbase_kickstarter
● doc_extbase: https://svn.typo3.org/TYPO3v4/CoreProjects/MVC/doc_extbase/trunk/
● Extension "efempty" (siehe TER): Extbase/Fluid, leerer Container für erste Experimente
● Extbase/Fluid Cheat-Sheet:
http://www.typofaktum.de/fileadmin/slides/ExtbaseFluidCheatSheetTypofaktum.pdf
● Einstieg in Extbase/Fluid-Entwicklung (mit Extbase-Kickstarter!):
http://www.mittwald.de/fileadmin/pdf/extbase_fluid.pdf
● TYPO3 4.3: verstehen, implementieren, erweitern (Videotraining)
Addison-Wesley/video2brain, Aster/Hauser/Neufeind, ISBN 978-3-8273-6290-2
● TYPO3-Extensions mit Extbase & Fluid (Buch)
O' Reilly, Rau/Kurfürst, ISBN 978-3-8972-1965-6
● TYPO3-Extensions. Professionelle Frontend- und Backend-Programmierung
Hanser, Ebner/Lobacher/Ulbrich, 978-3-4464-1557-7
● Extbase-Talks von der T3CON10: http://t3con.mirror.speedpartner.de/
(Archiv aller T3CON-Videos 2006 bis 2010)
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 33 / 34© SpeedPartner GmbH
Fazit
Es gibt viel zu entdecken!
Extbase/Fluid-Einführung
TYPO3 Usergroup NRW, 08.01.2011
Seite: 34 / 34© SpeedPartner GmbH
Kontakt
Danke fürs Zuhören
sowie
viel Erfolg und Spaß
mit Extbase/Fluid!
Link zu den Slides: http://talks.speedpartner.de
Bei Fragen stehen wir selbstverständlich gerne zur Verfügung:
Stefan Neufeind, neufeind@speedpartner.de
SpeedPartner GmbH, http://www.speedpartner.de/
W
ir suchen
Verstärkung!
Jetzt bewerben:
www.speedpartner.de

Weitere ähnliche Inhalte

Was ist angesagt?

TYPO3 CMS 7.6 - Die Neuerungen - pluswerk
TYPO3 CMS 7.6 - Die Neuerungen - pluswerkTYPO3 CMS 7.6 - Die Neuerungen - pluswerk
TYPO3 CMS 7.6 - Die Neuerungen - pluswerkdie.agilen GmbH
 
TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerkTYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerkdie.agilen GmbH
 
TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk
TYPO3 CMS 7 LTS - Die Neuerungen - pluswerkTYPO3 CMS 7 LTS - Die Neuerungen - pluswerk
TYPO3 CMS 7 LTS - Die Neuerungen - pluswerkdie.agilen GmbH
 
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkTYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkdie.agilen GmbH
 
TYPO3 Neos - Next Generation CMS - Webkongress Erlangen 2014
TYPO3 Neos - Next Generation CMS - Webkongress Erlangen 2014TYPO3 Neos - Next Generation CMS - Webkongress Erlangen 2014
TYPO3 Neos - Next Generation CMS - Webkongress Erlangen 2014die.agilen GmbH
 
Einführung und Grobüberblick über TYPO3 4.7
Einführung und Grobüberblick  über TYPO3 4.7Einführung und Grobüberblick  über TYPO3 4.7
Einführung und Grobüberblick über TYPO3 4.7Steffen Ritter
 
TYPO3: Extension news
TYPO3: Extension newsTYPO3: Extension news
TYPO3: Extension newsNicolaiSch
 
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkTYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkdie.agilen GmbH
 
TYPO3 4.5 LTS - Die Neuerungen auf einen Blick
TYPO3 4.5 LTS - Die Neuerungen auf einen BlickTYPO3 4.5 LTS - Die Neuerungen auf einen Blick
TYPO3 4.5 LTS - Die Neuerungen auf einen Blickdie.agilen GmbH
 
SLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSchlomo Schapiro
 
Keynote der 1. webEdition Benutzer Konferenz 2011 in Frankfurt
Keynote der 1. webEdition Benutzer Konferenz 2011 in FrankfurtKeynote der 1. webEdition Benutzer Konferenz 2011 in Frankfurt
Keynote der 1. webEdition Benutzer Konferenz 2011 in FrankfurtwebEdition
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookUlrich Krause
 
Drupal Basics (7-8) Vortrag (01.2016)
Drupal Basics (7-8) Vortrag (01.2016)Drupal Basics (7-8) Vortrag (01.2016)
Drupal Basics (7-8) Vortrag (01.2016)Peter_Majmesku
 
TYPO3 Monitoring mit t3monitoring
TYPO3 Monitoring mit t3monitoringTYPO3 Monitoring mit t3monitoring
TYPO3 Monitoring mit t3monitoringPeter Kraume
 

Was ist angesagt? (15)

TYPO3 CMS 7.6 - Die Neuerungen - pluswerk
TYPO3 CMS 7.6 - Die Neuerungen - pluswerkTYPO3 CMS 7.6 - Die Neuerungen - pluswerk
TYPO3 CMS 7.6 - Die Neuerungen - pluswerk
 
TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerkTYPO3 CMS 8.1 - Die Neuerungen - pluswerk
TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
 
TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk
TYPO3 CMS 7 LTS - Die Neuerungen - pluswerkTYPO3 CMS 7 LTS - Die Neuerungen - pluswerk
TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk
 
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkTYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
 
Upgrade auf TYPO3 6.2
Upgrade auf TYPO3 6.2Upgrade auf TYPO3 6.2
Upgrade auf TYPO3 6.2
 
TYPO3 Neos - Next Generation CMS - Webkongress Erlangen 2014
TYPO3 Neos - Next Generation CMS - Webkongress Erlangen 2014TYPO3 Neos - Next Generation CMS - Webkongress Erlangen 2014
TYPO3 Neos - Next Generation CMS - Webkongress Erlangen 2014
 
Einführung und Grobüberblick über TYPO3 4.7
Einführung und Grobüberblick  über TYPO3 4.7Einführung und Grobüberblick  über TYPO3 4.7
Einführung und Grobüberblick über TYPO3 4.7
 
TYPO3: Extension news
TYPO3: Extension newsTYPO3: Extension news
TYPO3: Extension news
 
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkTYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
 
TYPO3 4.5 LTS - Die Neuerungen auf einen Blick
TYPO3 4.5 LTS - Die Neuerungen auf einen BlickTYPO3 4.5 LTS - Die Neuerungen auf einen Blick
TYPO3 4.5 LTS - Die Neuerungen auf einen Blick
 
SLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauen
 
Keynote der 1. webEdition Benutzer Konferenz 2011 in Frankfurt
Keynote der 1. webEdition Benutzer Konferenz 2011 in FrankfurtKeynote der 1. webEdition Benutzer Konferenz 2011 in Frankfurt
Keynote der 1. webEdition Benutzer Konferenz 2011 in Frankfurt
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Drupal Basics (7-8) Vortrag (01.2016)
Drupal Basics (7-8) Vortrag (01.2016)Drupal Basics (7-8) Vortrag (01.2016)
Drupal Basics (7-8) Vortrag (01.2016)
 
TYPO3 Monitoring mit t3monitoring
TYPO3 Monitoring mit t3monitoringTYPO3 Monitoring mit t3monitoring
TYPO3 Monitoring mit t3monitoring
 

Andere mochten auch

Hearts content slideshare
Hearts content slideshareHearts content slideshare
Hearts content slideshareAndreas Jacobs
 
Wie verändern MOOCs die Hochschullehre - iMooX stellt sich vor
Wie verändern MOOCs die Hochschullehre - iMooX stellt sich vorWie verändern MOOCs die Hochschullehre - iMooX stellt sich vor
Wie verändern MOOCs die Hochschullehre - iMooX stellt sich vorMartin Ebner
 
H1 L'Europe dans le monde au XVIIIe siècle
H1 L'Europe dans le monde au XVIIIe siècleH1 L'Europe dans le monde au XVIIIe siècle
H1 L'Europe dans le monde au XVIIIe siècleFrançois Bernard
 
Android User Interface
Android User InterfaceAndroid User Interface
Android User InterfaceDanny Fürniß
 
Zend Certification Preparation Tutorial
Zend Certification Preparation TutorialZend Certification Preparation Tutorial
Zend Certification Preparation TutorialLorna Mitchell
 
Vaginal wash ph balance
Vaginal wash ph balanceVaginal wash ph balance
Vaginal wash ph balanceVwash Plus
 
Manual ministerio-juvenil-pastores-y-ancianos
Manual ministerio-juvenil-pastores-y-ancianosManual ministerio-juvenil-pastores-y-ancianos
Manual ministerio-juvenil-pastores-y-ancianosDaniel Nivardo Amaya
 
머신러닝의 개념과 실습
머신러닝의 개념과 실습머신러닝의 개념과 실습
머신러닝의 개념과 실습Byoung-Hee Kim
 
Introdução a Fotografia Digital
Introdução a Fotografia DigitalIntrodução a Fotografia Digital
Introdução a Fotografia DigitalAlexandre Duarte
 
Visão Geral da Administração da Produção
Visão Geral da Administração da ProduçãoVisão Geral da Administração da Produção
Visão Geral da Administração da Produçãocarllos.souza
 
Manual de Marketing Digital para 2014
Manual de Marketing Digital para 2014Manual de Marketing Digital para 2014
Manual de Marketing Digital para 2014Fabio Ricotta
 
Plagas principales del cultivo de soja
Plagas principales del cultivo de sojaPlagas principales del cultivo de soja
Plagas principales del cultivo de sojaCampo Global
 
Marketing imobiliário
Marketing imobiliárioMarketing imobiliário
Marketing imobiliárioAllangCruz
 

Andere mochten auch (20)

Hearts content slideshare
Hearts content slideshareHearts content slideshare
Hearts content slideshare
 
Wie verändern MOOCs die Hochschullehre - iMooX stellt sich vor
Wie verändern MOOCs die Hochschullehre - iMooX stellt sich vorWie verändern MOOCs die Hochschullehre - iMooX stellt sich vor
Wie verändern MOOCs die Hochschullehre - iMooX stellt sich vor
 
GVV-Schulung
GVV-SchulungGVV-Schulung
GVV-Schulung
 
Scaled Scrum bei der Post CH AG
Scaled Scrum bei der Post CH AGScaled Scrum bei der Post CH AG
Scaled Scrum bei der Post CH AG
 
H1 L'Europe dans le monde au XVIIIe siècle
H1 L'Europe dans le monde au XVIIIe siècleH1 L'Europe dans le monde au XVIIIe siècle
H1 L'Europe dans le monde au XVIIIe siècle
 
Android User Interface
Android User InterfaceAndroid User Interface
Android User Interface
 
Zend Certification Preparation Tutorial
Zend Certification Preparation TutorialZend Certification Preparation Tutorial
Zend Certification Preparation Tutorial
 
Vaginal wash ph balance
Vaginal wash ph balanceVaginal wash ph balance
Vaginal wash ph balance
 
Redes
RedesRedes
Redes
 
Manual ministerio-juvenil-pastores-y-ancianos
Manual ministerio-juvenil-pastores-y-ancianosManual ministerio-juvenil-pastores-y-ancianos
Manual ministerio-juvenil-pastores-y-ancianos
 
머신러닝의 개념과 실습
머신러닝의 개념과 실습머신러닝의 개념과 실습
머신러닝의 개념과 실습
 
Virtuelle Techniken im Marketingprozess: VDC-Whitepaper
Virtuelle Techniken im Marketingprozess: VDC-WhitepaperVirtuelle Techniken im Marketingprozess: VDC-Whitepaper
Virtuelle Techniken im Marketingprozess: VDC-Whitepaper
 
Introdução a Fotografia Digital
Introdução a Fotografia DigitalIntrodução a Fotografia Digital
Introdução a Fotografia Digital
 
Fibra Optica 2008
Fibra Optica 2008Fibra Optica 2008
Fibra Optica 2008
 
Reflexão de Natal
Reflexão de NatalReflexão de Natal
Reflexão de Natal
 
Visão Geral da Administração da Produção
Visão Geral da Administração da ProduçãoVisão Geral da Administração da Produção
Visão Geral da Administração da Produção
 
Sistemas de Alcantarillado Particular
Sistemas de Alcantarillado ParticularSistemas de Alcantarillado Particular
Sistemas de Alcantarillado Particular
 
Manual de Marketing Digital para 2014
Manual de Marketing Digital para 2014Manual de Marketing Digital para 2014
Manual de Marketing Digital para 2014
 
Plagas principales del cultivo de soja
Plagas principales del cultivo de sojaPlagas principales del cultivo de soja
Plagas principales del cultivo de soja
 
Marketing imobiliário
Marketing imobiliárioMarketing imobiliário
Marketing imobiliário
 

Ähnlich wie Extbase/Fluid: Kennenlernen und ausprobieren

TYPO3 Dokumentation mit ReStructuredText
TYPO3 Dokumentation mit ReStructuredTextTYPO3 Dokumentation mit ReStructuredText
TYPO3 Dokumentation mit ReStructuredTextPeter Linzenkirchner
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondUlrich Krause
 
Extbase & Fluid Einführung - MTUG - Patrick Lobacher
Extbase & Fluid Einführung - MTUG - Patrick LobacherExtbase & Fluid Einführung - MTUG - Patrick Lobacher
Extbase & Fluid Einführung - MTUG - Patrick Lobacherdie.agilen GmbH
 
TYPO3 Version 4.5 LTS - Preview / Vorschau
TYPO3 Version 4.5 LTS - Preview / VorschauTYPO3 Version 4.5 LTS - Preview / Vorschau
TYPO3 Version 4.5 LTS - Preview / VorschauCS2 AG
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantChristoph Möller
 
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)NETWAYS
 
Rollout-Prozess für APEX Anwendungen
Rollout-Prozess für APEX AnwendungenRollout-Prozess für APEX Anwendungen
Rollout-Prozess für APEX AnwendungenOliver Lemm
 
TYPO3 4.5 LTS - Was ist neu?
TYPO3 4.5 LTS - Was ist neu?TYPO3 4.5 LTS - Was ist neu?
TYPO3 4.5 LTS - Was ist neu?CS2 AG
 
Extreme Fluid - Status Quo der modernen Templating Engine
Extreme Fluid - Status Quo der modernen Templating EngineExtreme Fluid - Status Quo der modernen Templating Engine
Extreme Fluid - Status Quo der modernen Templating Enginedie.agilen GmbH
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Jürg Stuker
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & ToolsUlrich Krause
 
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)NETWAYS
 
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang BarthNETWAYS
 
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)NETWAYS
 
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)NETWAYS
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 

Ähnlich wie Extbase/Fluid: Kennenlernen und ausprobieren (20)

TYPO3 Dokumentation mit ReStructuredText
TYPO3 Dokumentation mit ReStructuredTextTYPO3 Dokumentation mit ReStructuredText
TYPO3 Dokumentation mit ReStructuredText
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
Extbase & Fluid Einführung - MTUG - Patrick Lobacher
Extbase & Fluid Einführung - MTUG - Patrick LobacherExtbase & Fluid Einführung - MTUG - Patrick Lobacher
Extbase & Fluid Einführung - MTUG - Patrick Lobacher
 
TYPO3 Version 4.5 LTS - Preview / Vorschau
TYPO3 Version 4.5 LTS - Preview / VorschauTYPO3 Version 4.5 LTS - Preview / Vorschau
TYPO3 Version 4.5 LTS - Preview / Vorschau
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
 
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)
 
Rollout-Prozess für APEX Anwendungen
Rollout-Prozess für APEX AnwendungenRollout-Prozess für APEX Anwendungen
Rollout-Prozess für APEX Anwendungen
 
TYPO3 4.5 LTS - Was ist neu?
TYPO3 4.5 LTS - Was ist neu?TYPO3 4.5 LTS - Was ist neu?
TYPO3 4.5 LTS - Was ist neu?
 
Extreme Fluid - Status Quo der modernen Templating Engine
Extreme Fluid - Status Quo der modernen Templating EngineExtreme Fluid - Status Quo der modernen Templating Engine
Extreme Fluid - Status Quo der modernen Templating Engine
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003
 
TYPO3 CMS 7
TYPO3 CMS 7TYPO3 CMS 7
TYPO3 CMS 7
 
java apis
java apisjava apis
java apis
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
 
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
 
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
 
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
 
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
 

Mehr von SpeedPartner GmbH

Professional reports with SVG
Professional reports with SVGProfessional reports with SVG
Professional reports with SVGSpeedPartner GmbH
 
XUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the webXUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the webSpeedPartner GmbH
 
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenWebsockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenSpeedPartner GmbH
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishSpeedPartner GmbH
 
.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-Domain.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-DomainSpeedPartner GmbH
 
Leben und Arbeiten in einer Community
Leben und Arbeiten in einer CommunityLeben und Arbeiten in einer Community
Leben und Arbeiten in einer CommunitySpeedPartner GmbH
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSpeedPartner GmbH
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSpeedPartner GmbH
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishSpeedPartner GmbH
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSpeedPartner GmbH
 
Deploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerationsDeploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerationsSpeedPartner GmbH
 
Explanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator CertificationExplanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator CertificationSpeedPartner GmbH
 

Mehr von SpeedPartner GmbH (19)

Professional reports with SVG
Professional reports with SVGProfessional reports with SVG
Professional reports with SVG
 
Secure PHP environment
Secure PHP environmentSecure PHP environment
Secure PHP environment
 
XUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the webXUL - The future of user-interfaces on the web
XUL - The future of user-interfaces on the web
 
PHP-Applikationen mit PEAR
PHP-Applikationen mit PEARPHP-Applikationen mit PEAR
PHP-Applikationen mit PEAR
 
PHP-Entwicklung mit PEAR
PHP-Entwicklung mit PEARPHP-Entwicklung mit PEAR
PHP-Entwicklung mit PEAR
 
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenWebsockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnish
 
News from PEAR
News from PEARNews from PEAR
News from PEAR
 
PEAR - An introduction
PEAR - An introductionPEAR - An introduction
PEAR - An introduction
 
Suchmaschinen-Optimierung
Suchmaschinen-OptimierungSuchmaschinen-Optimierung
Suchmaschinen-Optimierung
 
.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-Domain.EU – eine neue Top-Level-Domain
.EU – eine neue Top-Level-Domain
 
Leben und Arbeiten in einer Community
Leben und Arbeiten in einer CommunityLeben und Arbeiten in einer Community
Leben und Arbeiten in einer Community
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
 
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeasSystem-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
System-Management-Trio: Zentrale Verwaltung mit facter, puppet und augeas
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnish
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
 
Deploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerationsDeploying IPv6 - planning, common pitfalls and security-considerations
Deploying IPv6 - planning, common pitfalls and security-considerations
 
Explanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator CertificationExplanation of the TYPO3 Integrator Certification
Explanation of the TYPO3 Integrator Certification
 

Extbase/Fluid: Kennenlernen und ausprobieren

  • 1. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 1 / 34© SpeedPartner GmbH Extbase/Fluid Kennenlernen und ausprobieren (Eine Einführung)
  • 2. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 2 / 34© SpeedPartner GmbH Inhalte ● Einführung/Überblick ● Fluid ohne Extbase ● Extbase ● Konventionen (Naming, phpdoc, ...) ● Vom Pfad abweichen ● Stolperfallen ● Einstieg mit dem Extbase-Kickstarter ● Links / Hilfen
  • 3. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 3 / 34© SpeedPartner GmbH Über mich ● Stefan Neufeind ● Aus Neuss ● Tätig für SpeedPartner GmbH, ein Internet-Service-Provider (ISP) (Consulting, Entwicklung, Administration) ● Individuelle TYPO3-Entwicklungen ● Hosting, Housing, Managed Services ● Domains / Domain-Services ● xDSL, IP-Upstream, IPv6 ● Aktive Mitarbeit im Community-Umfeld (PHP/PEAR, TYPO3, Linux) ● Mitglied im TYPO3 Certification Team ● Freier Autor für z.B. t3n, iX, Internet World, ...
  • 4. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 4 / 34© SpeedPartner GmbH Einführung/Überblick Ziele des Vortrags: ● Einstieg geben ● Grober Überblick ● Aufbauend auf Standard-Beispiel „blog_example“ ● Wichtigsten Konventionen erläutern ● Standard-Fehler vermeiden ● Berührungsängste nehmen ● Spaß an Arbeit mit Extbase/Fluid vermitteln ● Vorbereitet sein für Umstieg auf FLOW3
  • 5. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 5 / 34© SpeedPartner GmbH Einführung/Überblick Hintergrund zur Entwicklung: ● „Klassische“ TYPO3-Architektur weit verbreitet ● Gemeinsame Basis für Extensions („tslib_pibase“) ● Teilweise sehr unterschiedliche Ansätze für Aufbau von Extensions ● Templating in Extensions überwiegend Marker-basiert ● Zusammengesetzt aus Platzhaltern (Markern) und Blöcken (Subparts) ● In 2006 Entscheidung TYPO3 „neu zu schreiben“ ● Aufteilung in Framework (FLOW3) und das eigentliche CMS (TYPO3 v5) ● Moderne Architektur und Software-Entwicklungs-Paradigmen ● Nutzung aktueller Möglichkeiten (PHP 5.2+) ● Domain-driven design, MVC (Model-View-Controller)
  • 6. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 6 / 34© SpeedPartner GmbH Einführung/Überblick Zusammenhang und Zusammenarbeit TYPO3v4 und TYPO3v5: ● Okt. 2008: „Transition Days“ in Berlin ● Verabschiedung des „The Berlin Manifestio“ ● Beschluss TYPO3 v4 weiterzuentwickeln (auch nach TYPO3 v5-Release) ● Übergang TYPO3 v4 zu TYPO3 v5 ermöglichen/vereinfachen ● War für TYPO3 v4 Grundlage zur Entscheidung für ● Eine moderne, neue Basisklasse als Ersatz für tslib_pibase: Extbase ● Neue, flexible und erweiterbare Template-Engine: Fluid
  • 7. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 7 / 34© SpeedPartner GmbH Einführung/Überblick Neuer Ansatz für TYPO3 v4-Extensions: ● Extbase-Framework: ● Konzepte und Lösungen von FLOW3 für TYPO3 v4.3+ verfügbar machen ● Struktur der Extensions, Konventionen, Schnittstellen (APIs) weitgehend gleich ● Leichten Übergang zu FLOW3/TYPO3v5 ermöglichen (Anpassungen erforderlich, jedoch Architektur und Schnittstellen ähnlich) ● Fluid für FLOW3 Basis ist Basis von Fluid für TYPO3v4 ● Fluid-Team entwickelte in wenigen Tagen ein „Backporter“-Tool ● Ermöglicht Fluid-Code von TYPO3v4 und FLOW3 synchron zu halten ● Beta von Extbase und Fluid im Herbst 2009 ● Aufnahme in TYPO3 Core mit Veröffentlichung von TYPO3 4.3.0 (Nov. 2009)
  • 8. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 8 / 34© SpeedPartner GmbH Fluid ohne Extbase Wechseln von Markern zu Fluid? ● Marker-Konzept: einfach und „bekannt“ ● Jedoch fast zu „minimalistisch“ ● Umfangreiche Templates erfordern teils sehr kreative Lösungen (Schleifen, ...) ● Unterschiedliche Lösungsansätze mit Stärken/Schwächen ● Umsetzungen in manchen Fällen fehleranfällig ● Fluid: strukturiert, flexibel, erweiterbar ● Übersichtlicher Aufbau ● Kontrollstrukturen: Verzweigungen / Schleifen ● Objektorientierung ● Erweiterbarkeit (ViewHelper, ...)
  • 9. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 9 / 34© SpeedPartner GmbH Fluid ohne Extbase Einfaches Beispiel mit Markern: ● HTML-Basis / Ziel: ● Im Template: <ul> <li style=“background:red“>Name1</li> <li style=“background:green“>Name2</li> <li style=“background:red“>Name3</li> </ul> <!-- ###NAMELIST### begin --> <ul> <!-- ###ROW_ODD### begin --> <li style="background:red">###NAME###</li> <!-- ###ROW_ODD### begin --> <!-- ###ROW_EVEN### begin --> <li style="background:green">###NAME###</li> <!-- ###ROW_EVEN### begin --> </ul> <!-- ###NAMELIST### end -->
  • 10. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 10 / 34© SpeedPartner GmbH Fluid ohne Extbase Einfaches Beispiel mit Markern: ● Extension-Code (Auszug): $templateCode = $this->cObj->fileResource('EXT:' . $this->extKey . '/res/marker.htm'); $template = array(); $template['namelist'] = $this->cObj->getSubpart($templateCode,'###NAMELIST###'); $template['row_odd'] = $this->cObj->getSubpart($template['namelist'],'###ROW_ODD###'); $template['row_even'] = $this->cObj->getSubpart($template['namelist'],'###ROW_EVEN###'); $contentList = ''; $odd = true; foreach($names as $name) { if($odd) { $contentList .= $this->cObj->substituteMarker($template['row_odd'], '###NAME###', $name); } else { $contentList .= $this->cObj->substituteMarker($template['row_even'],'###NAME###',$name); } $odd = ($odd == false); } $content = $template['namelist']; $content = $this->cObj->substituteSubpart($content, '###ROW_ODD###', ''); $content = $this->cObj->substituteSubpart($content, '###ROW_EVEN###', $contentList);
  • 11. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 11 / 34© SpeedPartner GmbH Fluid ohne Extbase Einfaches Beispiel mit Fluid: ● HTML-Basis / Ziel: ● Im Template: <ul> <li style=“background:red“>Name1</li> <li style=“background:green“>Name2</li> <li style=“background:red“>Name3</li> </ul> <ul> <f:for each="{names}" as="name"> <f:cycle values="{0: 'red', 1: 'green'}" as="alternate"> <li style="background:{alternate}">{name}</li> </f:cycle> </f:for> </ul>
  • 12. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 12 / 34© SpeedPartner GmbH Fluid ohne Extbase Einfaches Beispiel mit Fluid: ● Extension-Code (Auszug): $view = t3lib_div::makeInstance('Tx_Fluid_View_TemplateView'); $controllerContext = t3lib_div::makeInstance('Tx_Extbase_MVC_Controller_ControllerContext'); $controllerContext->setRequest(t3lib_div::makeInstance('Tx_Extbase_MVC_Request')); $view->setControllerContext($controllerContext); $template = t3lib_extMgm::extPath($this->extKey) . 'res/marker_fluid.htm'; $view->setTemplatePathAndFilename($template); $view->assign('names', $names); $content = $view->render();
  • 13. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 13 / 34© SpeedPartner GmbH Extbase Konzept: ● Domain-driven design: ● Umfeld der Problemstellung ● Gemeinsame Sprache (Begrifflichkeiten, ...) ● Objekt-Modell mit Eigenschaften, Funktionalitäten und Beziehungen ● Model-View-Controller (MVC): ● Model: kapselt Anwendungslogik und -daten sowie Zugriffs- und Speicherlogik ● Controller: stellt nach außen sichtbare, aufrufbare Funktionalitäten bereit, koordiniert Funktionalität welche im Model implementiert wird ● View: Ausgabelogik, Darstellung der Daten (bei Extbase in der Regel mit Fluid)
  • 14. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 14 / 34© SpeedPartner GmbH Extbase Konventionen: ● Klassen: UpperCamelCase ● Methoden & Variablen: lowerCamelCase ● Bildung von Namen ● Für Klassennamen: Tx_[ExtensionName]_[Ebene1]_[Ebene2]... z.B. Tx_BlogExample_Controller_BlogController, Tx_BlogExample_Domain_Model_Blog ● Verzeichnisse/Dateien: einzelne Bestandteile durch Verzeichnisse abgebildet z.B. Classes/Controller/BlogController.php oder Classes/Domain/Model/Blog.php ● Datenbank: lower-case mit Unterstrichen, z.B. tx_blogexample_domain_model_blog Struktur: ● Objekte sind in einem „Repository“ gesammelt, welches die Verwaltung übernimmt ● Persistence-Manager übernimmt Speicherung / Rekonstruktion von Objekten ● Optional: Validatoren übernehmen die Prüfung von Objekten und Werten ● Ausgabe aus Rahmen (Layout), Template und Blöcke (Partials) zusammengesetzt
  • 15. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 15 / 34© SpeedPartner GmbH Extbase Überblick über Standard-Beispiel „blog_example“: ● Besteht aus: ● Ansatz: Blogs enthalten Posts, welche mit Kommentaren/Tags versehen sein können ● Funktionalitäten z.B. eines Blog-Post (siehe PostController): Listenansicht (Index), Einzelansicht, Erzeugen (+ Speichern), Editieren (+ Updaten), Löschen Blog Post Author Administrator Comment Tag 1 1* * 0..* 0..* 0..*
  • 16. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 16 / 34© SpeedPartner GmbH Extbase ... Live-Demo„blog_example“ ... To-Do: ● Installation ● Einbindung in eine Seite ● Anlegen von Storage Folder und Einträgen ● Funktionstests Stolperfallen bei ersten Schritten: ● Statische Konfiguration inkludieren ● Storage Folder angeben ● Anlagen eines „Administrator“ und einer „Person“ per Backend ● Person muss einen „name“ (statt „username“) erhalten, sonst kein Dropdown-Eintrag sichtbar
  • 17. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 17 / 34© SpeedPartner GmbH Extbase Verzeichnis-/ Datei-Struktur:
  • 18. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 18 / 34© SpeedPartner GmbH Extbase Konfigurationen / Abhängigkeiten: ● Üblicherweise Nutzung von Konventionen statt expliziten Angaben („Convention over configuration“) ● Alternativ explizite Konfiguration (Tabellennamen, Spaltennamen, Abhängigkeiten) ● Methodenparameter („Type Hinting“) ● TypoScript ● Standardmäßig unter „Configuration/TypoScript“, siehe constants.txt / setup.txt ● Für Extension: unterhalb „plugin.tx_ourextension“ ● Für alle Extensions: unterhalb „config.tx_extbase“
  • 19. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 19 / 34© SpeedPartner GmbH Extbase Konfigurationen / Abhängigkeiten: ● TCA ● Standardmäßig unter „Configuration/TCA“ in „tca.php“ ● phpdoc (!) ● Angabe von Typen für Eigenschaften (Models) ● in Verbindung mit TCA somit Angabe der Verbindungen zwischen Objekten ● Validatoren für Objekte und Eigenschaften sowie „@dontvalidate“ ● Lade-/Verarbeitungsanweisungen („@lazy“, „@cascade remove“)
  • 20. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 20 / 34© SpeedPartner GmbH Extbase Konfigurationen / Abhängigkeiten: class Tx_BlogExample_Domain_Model_Blog extends Tx_Extbase_DomainObject_AbstractEntity { /** * The blog's title. * * @var string * @validate StringLength(minimum = 1, maximum = 80) */ protected $title = ''; /** * The posts of this blog * * @var Tx_Extbase_Persistence_ObjectStorage<Tx_BlogExample_Domain_Model_Post> * @lazy * @cascade remove */ protected $posts; /** * Adds a post to this blog * * @param Tx_BlogExample_Domain_Model_Post $post * @return void */ public function addPost(Tx_BlogExample_Domain_Model_Post $post) { $this->posts->attach($post); }
  • 21. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 21 / 34© SpeedPartner GmbH Extbase Konfigurationen / Abhängigkeiten: class Tx_BlogExample_Controller_PostController extends Tx_Extbase_MVC_Controller_ActionController { // ... /** * Displays a form for creating a new post * * @param Tx_BlogExample_Domain_Model_Blog $blog The blog the post belogs to * @param Tx_BlogExample_Domain_Model_Post $newPost Fresh post object as basis for rendering * @return string An HTML form for creating a new post * @dontvalidate $newPost */ public function newAction(Tx_BlogExample_Domain_Model_Blog $blog, Tx_BlogExample_Domain_Model_Post $newPost = NULL) { $this->view->assign('authors', $this->personRepository->findAll()); $this->view->assign('blog', $blog); $this->view->assign('newPost', $newPost); }
  • 22. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 22 / 34© SpeedPartner GmbH Extbase Konfigurationen / Abhängigkeiten: class Tx_BlogExample_Controller_PostController extends Tx_Extbase_MVC_Controller_ActionController { // ... /** * Creates a new post * * @param Tx_BlogExample_Domain_Model_Blog $blog The blog the post belogns to * @param Tx_BlogExample_Domain_Model_Post $newBlog Fresh post object, not yet added to repo * @return void */ public function createAction(Tx_BlogExample_Domain_Model_Blog $blog, Tx_BlogExample_Domain_Model_Post $newPost) { $blog->addPost($newPost); $newPost->setBlog($blog); $this->flashMessages->add('Your new post was created.'); $this->redirect('index', NULL, NULL, array('blog' => $blog)); }
  • 23. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 23 / 34© SpeedPartner GmbH Extbase Ausgaben: ● Per Fluid ● Verschiedene Ausgabetypen („format“) möglich ● standardmäßig „HTML“ mit Endung „.html“ ● Alternativ z.B. „txt“, „json“ oder „pdf“ möglich ● Rahmen (Layout), z.B. Resources/Private/Layouts/default.html <h1>Blog Example</h1> <hr /> <f:renderFlashMessages class="tx-extbase-flash-message" /> <f:render section="content" /> <hr /> <p>&copy; TYPO3 Association</p
  • 24. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 24 / 34© SpeedPartner GmbH Extbase Ausgaben: ● Template, z.B. Resources/Private/Templates/Post/new.html <f:layout name="default" /> <f:section name="content"> <div class="csc-header csc-header-n1"> <h1 class="csc-firstHeader">Create a new Post</h1></div> <f:render partial="formErrors" arguments="{for: 'newPost'}" /> <f:form method="post" controller="Post" action="create" name="newPost" object="{newPost}" arguments="{blog : blog}"> <label for="author">Author <span class="required">(required)</span></label><br /> <f:form.select property="author" options="{authors}" optionValueField="uid" optionLabelField="fullName"><select><option>dummy</option></select> </f:form.select><br /> <label for="title">Title <span class="required">(required)</span></label><br /> <f:form.textbox property="title" /><br /> <label for="content">Content <span class="required">(required)</span></label><br /> <f:form.textarea property="content" rows="8" cols="46" /><br /> <f:form.submit class="submit" value="Submit"/> </f:form> </f:section>
  • 25. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 25 / 34© SpeedPartner GmbH Extbase Ausgaben: ● Blöcke (Partials), z.B. Resources/Private/Partials/formErrors.html <f:form.errors for="{for}"> <div class="error"> {error.message} <f:if condition="{error.propertyName}"> <p> <strong>{error.propertyName}</strong>: <f:for each="{error.errors}" as="errorDetail"> {errorDetail.message} </f:for> </p> </f:if> </div> </f:form.errors>
  • 26. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 26 / 34© SpeedPartner GmbH Extbase ... Live-Demo„blog_example“ ... To-Do: ● Funktionstests ● Linkerzeugung (Fluid-ViewHelper) ● Validatoren ● Fehlerausgaben ● Redirects
  • 27. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 27 / 34© SpeedPartner GmbH Vom Pfad abweichen Beispiele zur Erweiterung / Anpassung von Extbase/Fluid siehe weitere Präsentationen zum Thema auf unserer Website: http://talks.speedpartner.de/
  • 28. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 28 / 34© SpeedPartner GmbH Vom Pfad abweichen Kleinere Standard-Extbase-Stolperfallen: ● @lazy im phpdoc benötigt, sofern sich Objekte gegenseitig referenzieren ● Ansonsten erfolgt der automatische Ladevorgang in einer Endlosschleife ● @dontvalidate im phpdoc angeben bei newAction() ● Speicherung erfolgt (üblicherweise) über separate Action, welche validiert ● Wenn Validierung fehlschlägt, wird die vorherige Action wieder aufgerufen (newAction()) ● Endlosschleife sofern diese Fehleingaben zur Wiedervorlage auch validieren würde ● Falls Einträge nicht gefunden werden Storage-PID kontrollieren 1.Ausgangspunkt im Formular des Plugins 2.TypoScript-Setup „plugin.tx_extensionname.persistence.storagePid (kommaseparierte Liste) 3.TypoScript-Setup „config.tx_extbase.persistence.storagePid“ (kommaseparatierte Liste) 4.Auf Wurzelseite des Seitenbaums
  • 29. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 29 / 34© SpeedPartner GmbH Vom Pfad abweichen Kleinere Standard-Extbase-Stolperfallen: ● Falls Einträge nicht gefunden werden Storage-PID kontrollieren 1.Ausgangspunkt im Formular des Plugins 2.TypoScript-Setup „plugin.tx_extensionname.persistence.storagePid (kommaseparierte Liste) 3.TypoScript-Setup „config.tx_extbase.persistence.storagePid“ (kommaseparatierte Liste) 4.Auf Wurzelseite des Seitenbaums ● Falls Einträge an falsche Stelle geschrieben werden Storage-PID kontrollieren 1.TypoScript-Setup „plugin.tx_extensionname.persistence.classes. VollerKlassenName.newRecordStoragePid“ (einzelne PID) 2.TypoScript-Setup „config.tx_extbase.persistence.classes. VollerKlassenName.newRecordStoragePid“ (einzelne PID) 3.Ansonsten je erstes Objekt aus o.g. Punkten (1-4) von Lesereihenfolge, letztlich also Wurzelseite des Seitenbaums
  • 30. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 30 / 34© SpeedPartner GmbH Extbase-Kickstarter Funktionalitäten: ● Basis-Gerüst für Extension erstellen ● Models, Repositories und Controller erstellen ● Basis-Funktionalitäten: CRUD (Create, Read, Update, Delete) ● Bearbeiten von erstellten Extensions (derzeit Beta!) Erste Schritte: ● Kickstarter aus git-Repository auschecken (derzeit noch kein Download-Paket) ● Installieren ● Basis-Daten für Extension vergeben ● Objekte und Eigenschaften festlegen ● Beziehungen definieren ● Neue Extension speichern und installieren ● Plugin einbinden
  • 31. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 31 / 34© SpeedPartner GmbH Extbase-Kickstarter Kurze Live-Demonstration
  • 32. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 32 / 34© SpeedPartner GmbH Links / Hilfen ● viewhelpertest: https://svn.typo3.org/TYPO3v4/CoreProjects/MVC/viewhelpertest/ ● extbase_kickstarter: http://forge.typo3.org/projects/extension-extbase_kickstarter/ Mittlerweile von SVN auf git gewechselt! Aktuellen Checkout erstellen über: git clone git://git.typo3.org/TYPO3v4/Extensions/extbase_kickstarter.git extbase_kickstarter ● doc_extbase: https://svn.typo3.org/TYPO3v4/CoreProjects/MVC/doc_extbase/trunk/ ● Extension "efempty" (siehe TER): Extbase/Fluid, leerer Container für erste Experimente ● Extbase/Fluid Cheat-Sheet: http://www.typofaktum.de/fileadmin/slides/ExtbaseFluidCheatSheetTypofaktum.pdf ● Einstieg in Extbase/Fluid-Entwicklung (mit Extbase-Kickstarter!): http://www.mittwald.de/fileadmin/pdf/extbase_fluid.pdf ● TYPO3 4.3: verstehen, implementieren, erweitern (Videotraining) Addison-Wesley/video2brain, Aster/Hauser/Neufeind, ISBN 978-3-8273-6290-2 ● TYPO3-Extensions mit Extbase & Fluid (Buch) O' Reilly, Rau/Kurfürst, ISBN 978-3-8972-1965-6 ● TYPO3-Extensions. Professionelle Frontend- und Backend-Programmierung Hanser, Ebner/Lobacher/Ulbrich, 978-3-4464-1557-7 ● Extbase-Talks von der T3CON10: http://t3con.mirror.speedpartner.de/ (Archiv aller T3CON-Videos 2006 bis 2010)
  • 33. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 33 / 34© SpeedPartner GmbH Fazit Es gibt viel zu entdecken!
  • 34. Extbase/Fluid-Einführung TYPO3 Usergroup NRW, 08.01.2011 Seite: 34 / 34© SpeedPartner GmbH Kontakt Danke fürs Zuhören sowie viel Erfolg und Spaß mit Extbase/Fluid! Link zu den Slides: http://talks.speedpartner.de Bei Fragen stehen wir selbstverständlich gerne zur Verfügung: Stefan Neufeind, neufeind@speedpartner.de SpeedPartner GmbH, http://www.speedpartner.de/ W ir suchen Verstärkung! Jetzt bewerben: www.speedpartner.de