Typo3 Flow: Unterschied zwischen den Versionen

Aus Vosp.freesn.de
Zur Navigation springen Zur Suche springen
F (Diskussion | Beiträge)
F (Diskussion | Beiträge)
 
(17 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>
</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('date.timezone',date_default_timezone_get());
if (ini_get('date.timezone') === '') {
echo('Flow requires the PHP setting "date.timezone" to be set. (Error #1342087777)');
exit(1);
}
</source>
= 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>
'''interne Übersetzung'''
<source lang="html4strict"><td>{customer.number.vorwahl} / {customer.number.hauptwahl}</td></source>
=>
<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 =
'''Quellen'''
* [https://de.wikipedia.org/wiki/TYPO3_Flow wp: TYPO3 Flow]
* [http://docs.typo3.org/flow/TYPO3FlowDocumentation/Quickstart/Index.html flow Quickstart]
* [http://www.typo3lexikon.de/typo3-tutorials/extensions/fluid.html deutsches Fluid Tutorial]
* [http://flow.typo3.org/download.html download Versionsnummer]
** [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]

Aktuelle Version vom 5. September 2013, 13:43 Uhr

typo3

Installation

curl -s https://getcomposer.org/installer | php
php composer.phar create-project --dev --keep-vcs typo3/flow-base-distribution Quickstart 2.0.0-beta1
cd Quickstart/
./flow core:setfilepermissions sn www-data www-data

Quellen