Typo3 Flow: Unterschied zwischen den Versionen
Aus Vosp.info
F (Diskussion | Beiträge) |
F (Diskussion | Beiträge) (→FLOW3 und Extbase) |
||
Zeile 25: | Zeile 25: | ||
** die Verzeichnisstruktur einer Erweiterung muss die Namensräume der Klassen widerspiegeln und umgekehrt. | ** die Verzeichnisstruktur einer Erweiterung muss die Namensräume der Klassen widerspiegeln und umgekehrt. | ||
** ZB aus der Klassenbezeichnung ergibt sich die Ordnerstruktur Tx_extensionname_Controller_MyProjektController => ext/extensionname/Controller/MyProjektController.php | ** ZB aus der Klassenbezeichnung ergibt sich die Ordnerstruktur Tx_extensionname_Controller_MyProjektController => ext/extensionname/Controller/MyProjektController.php | ||
− | * '''MVC''' | + | * '''[https://de.wikipedia.org/wiki/Model_View_Controller MVC]''' |
** Daten'''m'''odell -- Anwenungsschicht; objektorientiert, Klassen werden in DB(Tabellen) abgebildet | ** Daten'''m'''odell -- Anwenungsschicht; objektorientiert, Klassen werden in DB(Tabellen) abgebildet | ||
** '''V'''iew | ** '''V'''iew |
Version vom 26. Februar 2013, 11:38 Uhr
Inhaltsverzeichnis
Extension allgemein
- eine Extension kann mehrere Plugins haben die als Inhaltselemente auf eine Typo3 Seite hinzugefügt werden können
Typo3 V4.3 < * < V5
durch die Extensions extbase und fluid läßt sich schon ab typo3 V4.3 zukunftsicher für typo3 V5 entwickeln!
Aktivierung der schon vorhandenen Extensions im Erweiterungsmanager
- extbase - löst pi_base Klasse ab
- MVC Framework (von flow3) für domainorientierte Erweiterungen
- fluid
- template engine
- extension_builder
- der neue kickstarter für extbase/fluid ...
FLOW3 und Extbase
Charakteristia
- FLOW3 hingegen verwendet einen 128-Bit-Hexadezimalzahl als Kennzeichner. Tatsächlich ist die Implementierung eines solchen Identifikators dem Entwickler überlassen, solange die Eindeutigkeit gewährleistet ist.
- Convention over Configuration - Konvention steht über Konfiguration
- vieles ergibt sich aus der gleichen Namensbildung z.B. Klassennamen ähnlich wenn nicht gleich Tabellennamen
- die Verzeichnisstruktur einer Erweiterung muss die Namensräume der Klassen widerspiegeln und umgekehrt.
- ZB aus der Klassenbezeichnung ergibt sich die Ordnerstruktur Tx_extensionname_Controller_MyProjektController => ext/extensionname/Controller/MyProjektController.php
- MVC
- Datenmodell -- Anwenungsschicht; objektorientiert, Klassen werden in DB(Tabellen) abgebildet
- View
- Controller
- Reflection API
- Herrausfinden eines Datentyps, Parametertyp anhand der Kommentare: also WICHTIG: Typen angeben in Form von @param int $var ansonsten im Zweifel Fehler!!!
Verzeichnisstruktur
klare Verzeichnisstruktur ergibt Klassennamenstruktur, etc
- Classes
- Controller -- hier muss mindestens ein Controller sein
- Domain
- Model -- Klassen bilden das Datenmodel des MVC-Models
- Repository
- Validator
- Views -- Objekte bilden die Präsentationsschicht des MVC-Models
- ViewHelpers -- optional
- Configuration -- Konfigurationsdateien die noch nötig sind
- FlexForms
- TCA -- Table Configuration Array beschreibt das Verhalten der Datenbanktabellen
- z.B die Datentypen inklusive Relationen zwischen Tabellen bzw Objekten
- TypoScript
- Resources
- Private -- die der Besucher nicht direkt lesen darf, evt. mit .htaccess zu schützen
- Templates
- Language
- Layout
- Partial
- Public -- CSS, Images die Besucher direkt lesen dürfen
- Private -- die der Besucher nicht direkt lesen darf, evt. mit .htaccess zu schützen
- ext_emconf.php
- wird vom Extensionmanager gelesen
- Informationen über Erweiterung, Versionsnummer, Autor, Einstellungen/Konflikte über Abhängigkeiten zu anderen Erweiterungen.
- ext_localconf.php
- wird bei jedem Frontend-, Backendseitenaufruf gelesen
- Konfiguration
- ext_tables.php
- Erweiterung der ext_loclconf.php zB. Datenbanktabelleninformation
- ext_tables.sql
- Struktur der DB Tabellen
fluid
<h2>{f:translate( key : 'customers' )}</h2>
<table>
<tr>
<th>{f:translate( key: 'customer.number' )}</th>
<th>{f:translate( key: 'customer.name' )}</th>
</tr>
<f:for each="{customers}" as="customer">
<tr>
<td>{customer.number.vorwahl} / {customer.number.hauptwahl}</td>
<td>{customer.name}</td>
</tr>
</f:for>
</table>
$view->assign('customer', $customer);
interne Übersetzung
<td>{customer.number.vorwahl} / {customer.number.hauptwahl}</td>
=>
<td><?=$customer->getNumber()->getVorwahl()?> / <?=$customer->getNumber()->getHauptwahl()?></td>