Click here to load reader

Extbase/Fluid: Tipps, Tricks und Stolperfallen

  • View
    1.809

  • Download
    3

Embed Size (px)

DESCRIPTION

Date: 2010-09-11 Location: Munich, Germany Event: TYPO3camp Munich

Text of Extbase/Fluid: Tipps, Tricks und Stolperfallen

  • 1. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 1 / 42 SpeedPartner GmbH Extbase/Fluid Tipps, Tricks und Stolperfallen (eine Einfhrung)

2. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 2 / 42 SpeedPartner GmbH Inhalte Einfhrung/berblick Fluid ohne Extbase Extbase Konventionen (Naming, phpdoc, ...) Vom Pfad abweichen Eigene Erweiterungen Stolperfallen Links / Hilfen 3. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 3 / 42 SpeedPartner GmbH ber mich Stefan Neufeind Aus Neuss Ttig fr 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) Autor fr z.B. t3n, iX, Internet World, ... 4. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 4 / 42 SpeedPartner GmbH Einfhrung/berblick Ziele des Vortrags: Einstieg geben Grober berblick Aufbauend auf Standard-Beispiel blog_example Wichtigsten Konventionen erlutern Standard-Fehler vermeiden Berhrungsngste nehmen Spa an Arbeit mit Extbase/Fluid vermitteln Vorbereitet sein fr Umstieg auf FLOW3 5. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 5 / 42 SpeedPartner GmbH Einfhrung/berblick Hintergrund zur Entwicklung: Klassische TYPO3-Architektur weit verbreitet Gemeinsame Basis fr Extensions (tslib_pibase) Teilweise sehr unterschiedliche Anstze fr Aufbau von Extensions Templating in Extensions berwiegend Marker-basiert Zusammengesetzt aus Platzhaltern (Markern) und Blcken (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 Mglichkeiten (PHP 5.2+) Domain-driven design, MVC (Model-View-Controller) 6. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 6 / 42 SpeedPartner GmbH Einfhrung/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 ermglichen/vereinfachen War fr TYPO3 v4 Grundlage zur Entscheidung fr Eine moderne, neue Basisklasse als Ersatz fr tslib_pibase: Extbase Neue, flexible und erweiterbare Template-Engine: Fluid 7. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 7 / 42 SpeedPartner GmbH Einfhrung/berblick Neuer Ansatz fr TYPO3 v4-Extensions: Extbase-Framework: Konzepte und Lsungen von FLOW3 fr TYPO3 v4.3+ verfgbar machen Struktur der Extensions, Konventionen, Schnittstellen (APIs) weitgehend gleich Leichten bergang zu FLOW3/TYPO3v5 ermglichen (Anpassungen erforderlich, jedoch Architektur und Schnittstellen hnlich) Fluid fr FLOW3 Basis ist Basis von Fluid fr TYPO3v4 Fluid-Team entwickelte in wenigen Tagen ein Backporter-Tool Ermglicht Fluid-Code von TYPO3v4 und FLOW3 synchron zu halten Beta von Extbase und Fluid im Herbst 2009 Aufnahme in TYPO3 Core mit Verffentlichung von TYPO3 4.3.0 (Nov. 2009) 8. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 8 / 42 SpeedPartner GmbH Fluid ohne Extbase Wechseln von Markern zu Fluid? Marker-Konzept: einfach und bekannt Jedoch fast zu minimalistisch und wenig Umfangreiche Templates erfordern teils sehr kreative Lsungen (Schleifen, ...) Unterschiedliche Lsungsanstze mit Strken/Schwchen Umsetzungen in manchen Fllen fehleranfllig Fluid: strukturiert, flexibel, erweiterbar bersichtlicher Aufbau Kontrollstrukturen: Verzweigungen / Schleifen Objektorientierung Erweiterbarkeit (ViewHelper, ...) 9. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 9 / 42 SpeedPartner GmbH Fluid ohne Extbase Einfaches Beispiel mit Markern: HTML-Basis / Ziel: Im Template:

  • Name1
  • Name2
  • Name3
  • ###NAME###
  • ###NAME###

10. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 10 / 42 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-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 11 / 42 SpeedPartner GmbH Fluid ohne Extbase Einfaches Beispiel mit Fluid: HTML-Basis / Ziel: Im Template:

  • Name1
  • Name2
  • Name3
  • {name}

12. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 12 / 42 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-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 13 / 42 SpeedPartner GmbH Extbase Konzept: Domain-driven design: Umfeld der Problemstellung Gemeinsame Sprache (Begrifflichkeiten, ...) Objekt-Modell mit Eigenschaften, Funktionalitten und Beziehungen Model-View-Controller (MVC): Model: kapselt Anwendungslogik und -daten sowie Zugriffs- und Speicherlogik Controller: stellt nach auen sichtbare, aufrufbare Funktionalitten bereit, koordiniert Funktionalitt welche im Model implementiert wird View: Ausgabelogik, Darstellung der Daten (bei Extbase in der Regel mit Fluid) 14. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 14 / 42 SpeedPartner GmbH Extbase Konventionen: Klassen: UpperCamelCase Methoden & Variablen: lowerCamelCase Bildung von Namen Fr 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 Prfung von Objekten und Werten Ausgabe aus Rahmen (Layout), Template und Blcke (Partials) zusammengesetzt 15. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 15 / 42 SpeedPartner GmbH Extbase berblick ber Standard-Beispiel blog_example: Besteht aus: Ansatz: Blogs enthalten Posts, welche mit Kommentaren/Tags versehen sein knnen Funktionalitten z.B. eines Blog-Post (siehe PostController): Listenansicht (Index), Einzelansicht, Erzeugen (+ Speichern), Editieren (+ Updaten), Lschen Blog Post Author Administrator Comment Tag 1 1* * 0..* 0..* 0..* 16. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 16 / 42 SpeedPartner GmbH Extbase ... Live-Demoblog_example ... To-Do: Installation Einbindung in eine Seite Anlegen von Storage Folder und Eintrgen 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-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 17 / 42 SpeedPartner GmbH Extbase Verzeichnis-/ Datei-Struktur: 18. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 18 / 42 SpeedPartner GmbH Extbase Konfigurationen / Abhngigkeiten: blicherweise Nutzung von Konventionen statt expliziten Angaben (Convention over configuration) Alternativ explizite Konfiguration (Tabellennamen, Spaltennamen, Abhngigkeiten) Methodenparameter (Type Hinting) TypoScript Standardmig unter Configuration/TypoScript, siehe constants.txt / setup.txt Fr Extension: unterhalb plugin.tx_ourextension Fr alle Extensions: unterhalb config.tx_extbase 19. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 19 / 42 SpeedPartner GmbH Extbase Konfigurationen / Abhngigkeiten: TCA Standardmig unter Configuration/TCA in tca.php phpdoc (!) Angabe von Typen fr Eigenschaften (Models) in Verbindung mit TCA somit Angabe der Verbindungen zwischen Objekten Validatoren fr Objekte und Eigenschaften sowie @dontvalidate Lade-/Verarbeitungsanweisungen (@lazy, @cascade remove) 20. Extbase/Fluid-Einfhrung TYPO3camp Mnchen, 10.9.2010 Seite: 20 / 42 SpeedPartner GmbH Extbase Konfigurationen / Abhngigkeiten: 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 * @lazy * @cascade remove

Search related