|
|
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 2: |
Zeile 2: |
| | | |
| = Installation = | | = Installation = |
| + | |
| <source lang="bash"> | | <source lang="bash"> |
− | mkdir FLOW
| |
− | cd FLOW
| |
− |
| |
− | git clone --recursive git://git.typo3.org/FLOW3/Distributions/Base.git .
| |
− |
| |
| curl -s https://getcomposer.org/installer | php | | curl -s https://getcomposer.org/installer | php |
− | | + | php composer.phar create-project --dev --keep-vcs typo3/flow-base-distribution Quickstart 2.0.0-beta1 |
− | ./composer.phar install
| + | cd Quickstart/ |
− | | + | ./flow core:setfilepermissions sn www-data www-data |
− | ./flow flow:core:setfilepermissions sn www-data www-data
| |
− | | |
− | ./flow kickstart:package MyCompany.MyPackage
| |
− | </source>
| |
− | | |
− | Link setzen damit wir im Browser auf die Installation zu greifen können
| |
− | | |
− | http://localhost/Web
| |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | ==Probleme==
| |
− | | |
− | ===Flow requires the PHP setting "date.timezone" to be set. (Error #1342087777)===
| |
− | ich hatte trotz Angabe der date.timezone in der php.ini den Fehler
| |
− | | |
− | <source lang="bash">
| |
− | more /etc/php5/apache2/php.ini | grep timezone
| |
− | ; Defines the default timezone used by the date functions
| |
− | ; http://php.net/date.timezone
| |
− | date.timezone = "Europe/Berlin"
| |
− | </source>
| |
− | deshalb habe ich dreckig nachgeholfen php zuverstehen, welche Zeit ernutzen soll
| |
− | | |
− | '''FLOW/Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/Bootstrap.php'''
| |
− | <source lang="php">
| |
− | // ini_set einfach noch mal setzen!!!!
| |
− | ini_set('date.timezone',date_default_timezone_get());
| |
− | // Die Abfrage die sonst Probleme macht
| |
− | if (ini_get('date.timezone') === '') {
| |
− | echo('Flow requires the PHP setting "date.timezone" to be set. (Error #1342087777)');
| |
− | exit(1);
| |
− | }
| |
− | </source>
| |
− | | |
− | * '''andere dreckige Lösungen:'''
| |
− | ** [http://pastie.org/4272319# ähnlich]
| |
− | ** [http://stackoverflow.com/questions/4882790/how-to-set-date-timezone-for-code-igniter-to-work-with-php5-3 How to set date.timezone for code igniter to work with php5.3]
| |
− | ** [http://www.silverstripe.org/installing-silverstripe/show/15398?start=8 auskommentieren]
| |
− | | |
− | = 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
| |
− | * '''[https://de.wikipedia.org/wiki/Model_View_Controller MVC]'''
| |
− | ** Daten'''m'''odell -- Anwenungsschicht; objektorientiert, Klassen werden in DB(Tabellen) abgebildet
| |
− | ** '''V'''iew
| |
− | ** '''C'''ontroller
| |
− | * '''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 ... hier können eigen implementierte Verhaltensstrukturen für die Views abgelegt werden. schon vorhandene sind zB for, if, translate ...
| |
− | | |
− | * '''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
| |
− | | |
− | * '''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 =
| |
− | | |
− | <source lang="html4strict">
| |
− | <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>
| |
− | </source>
| |
− | | |
− | | |
− | <source lang="php">
| |
− | $view->assign('customer', $customer);
| |
| </source> | | </source> |
| | | |
− | '''interne Übersetzung''' | + | '''Quellen''' |
− | <source lang="html4strict"><td>{customer.number.vorwahl} / {customer.number.hauptwahl}</td></source>
| + | * [http://docs.typo3.org/flow/TYPO3FlowDocumentation/Quickstart/Index.html flow Quickstart] |
− | =>
| + | * [http://flow.typo3.org/download.html download Versionsnummer] |
− | <source lang="html4strict"><td><?=$customer->getNumber()->getVorwahl()?> / <?=$customer->getNumber()->getHauptwahl()?></td></source>
| |
− | | |
− | | |
− | ==Classes/ViewHelpers ==
| |
− | | |
− | = Persistenzschicht (persistence layer) von Extbase (Datenbankanbindung) =
| |
− | == data mapping ==
| |
− | | |
− | '''Tabellen Spalten Typen:'''
| |
− | * DateTime:
| |
− | ** config.eval=date
| |
− | ** config.eval=datetime
| |
− | * Checkbox
| |
− | * Ganzzahl (long)
| |
− | ** config.eval=int
| |
− | * Fließkommazahl:
| |
− | ** config.eval=double2
| |
− | * Fremdtabelle 1:1
| |
− | ** config.foreign_table=
| |
− | ** Spaltenwert = Fremdtabelle.uid
| |
− | * Fremdtabelle 1:m
| |
− | ** config.foreign_table=
| |
− | ** config.foreign_field=
| |
− | | |
− | == Ladeverfahren bei assoziierten Unterobjekten ==
| |
− | * Eager Loading (dt. in etwa eifriges Laden) --- alles wird immer geladen
| |
− | * Lazy Loading (dt. in etwa faules Laden)
| |
− | | |
− | = Arbeitsschritte zum Anlegen einer Extension=
| |
− | | |
− | == ext_tables.sql ==
| |
− | "Die Struktur der Datenbank wird als SQL-Dump in der Datei ext_tables.sql gespeichert."
| |
− | | |
− | == ext_tables.php ==
| |
− | "In der Datei ext_tables.php werden die einzelnen Tabellen konfiguriert. Dies ist notwendig, damit wir die Objekte über das TYPO3-Backend bearbeiten können und Extbase die Datenbanktabellen auf Klassen abbilden kann."
| |
− | | |
− | == tca.php ==
| |
− | "Schließlich werden in der Datei Configuration/TCA/tca.php die Spalten der einzelnen Tabellen konfiguriert. Diese Konfiguration ermöglicht Extbase das Abbilden der Datenbankspalten auf einzelne Klassenattribute. Der Name dieser Konfigurationsdatei ist frei wählbar; er muss lediglich in der ext_tables.php korrekt angegeben werden.
| |
− | | |
− | == locallang_db.xml ==
| |
− | Die sprachabhängigen Bezeichnungen für die Datenbanktabellen werden in der Datei Resources/Private/Language/locallang_db.xml gespeichert. Dieser Dateiname ist frei wählbar und kann in der ext_tables.php und tca.php angegeben werden.
| |
− | | |
− | ==Icons==
| |
− | Icons für die Tabellen können im Verzeichnis Resources/Public/Icons gespeichert werden.
| |
− | | |
− | = Quellen =
| |
− | * [https://de.wikipedia.org/wiki/TYPO3_Flow wp: TYPO3 Flow]
| |
− | * [http://www.typo3lexikon.de/typo3-tutorials/extensions/fluid.html deutsches Fluid Tutorial]
| |
− | ** [http://www.typo3lexikon.de/typo3-tutorials/extensions/fluid/parameter-in-kommentaren.html Parameter in Kommentaren] -- ungenau aber trotzdem hilfreich
| |
− | * [https://www.mittwald.de/fileadmin/downloads/pdf/dokus/Extbase_Fluid_Dokumentation.pdf ausführliche Extbase_Fluid_Dokumentation.pdf von mittwald]
| |
− | * [http://wiki.typo3.org/Fluid Fluid englisches Fluid Tutorial]
| |
− | * [http://docs.typo3.org/flow/TYPO3FlowDocumentation/Index.html TYPO3 Flow Documentation] | |
− | * [http://t3n.de/magazin/seitentemplates-fluid-226788/ t3n: TYPO3 Templates: Seiten-Layouts mit Fluid umsetzen] | |
− | * [http://de.slideshare.net/oliverklee/objektorientierte-programmierung-mit-extbase-und-fluid Objektorientierte Programmierung mit extbase und fluid]
| |
− | * [http://www.extbasefluid.com/ extbasefluid.com]
| |
− | * [http://www.typo3-nürnberg.de/typo-v5/extbase/backend/modul-im-backend/ kleines modul im backend]
| |