Sie sind hier
E-Book

TYPO3-Extensions

Professionelle Frontend- und Backend-Programmierung

AutorAlexander Ebner, Bernhard Ulbrich, Patrick Lobacher
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2010
Seitenanzahl466 Seiten
ISBN9783446423572
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis39,99 EUR

TYPO3 GEKONNT ERWEITERN
-Behandelt alle wesentlichen Aspekte der Extensionentwicklung
-Berücksichtigt topaktuell Extbase und Fluid
-Nur soviel allgemeine TYPO3-Grundlagen wie nötig
-Ideale Mischung aus Referenz und Lernbuch
-Code und Lösungen unter http://downloads.hanser.de und www.typo3-backstage.de
TYPO3 spielt im Markt der Content Management Systeme eine zentrale Rolle. Mit ein Grund für diesen Erfolg sind die vielfältigen Möglichkeiten zur Erweiterung des Systems durch eigene Extensions.
Genau diesem Thema widmet sich dieses Buch. Es wendet sich an TYPO3-Anwender und -Entwickler, die mithilfe eigener Erweiterungen das TYPO3-Grundsystem leistungsfähiger machen möchten. Schritt für Schritt wird der Leser durch die Welt der Extensionprogrammierung für das TYPO3-Backend und -Frontend geleitet, dabei werden alle Aspekte sowohl der klassischen Extensionentwicklung behandelt als auch neue Ansätze wie Extbase und Fluid berücksichtigt. Unterstützt wird die Darstellung durch zahlreiche anschauliche Beispiele. Der Referenzteil nennt und erläutert sämtliche Referenzen, API`s, Strukturen und Funktionen. TIPP: Suchen Sie Lösungen für Probleme im Umgang mit TYPO3? Dann könnte Ihnen das "TYPO3-Kochbuch" von Alexander Ebner und Patrick Lobacher gefallen, das ebenfalls bei Hanser erschienen ist.
Systemvoraussetzungen für eBook-inside: Internet-Verbindung und eBookreader Adobe Digital Editions.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe
14 Der neue Weg der Extension- Programmierung (S. 265-266)

Das TYPO3-Projekt steht am Scheideweg. Einerseits wird weiterhin auf die allseits bewährte Basis der Version 4.x vertraut - andererseits steht mit dem Rewrite der Version 5.x eine architektonisch komplett neue Version in den Startlöchern bzw. ist gar schon erschienen. Technisch gesehen handelt es sich dabei um zwei völlig verschiedene Programme. Während der 4er-Zweig in den letzten elf Jahren organisch gewachsen und so auch vom Code her selbst für Experten unübersichtlich und weitläufig ist, baut die 5er-Version auf einem der modernsten Frameworks auf, die es momentan auf dem Markt gibt - namentlich FLOW3.

Dieses Framework wurde von Anfang an gezielt so konzipiert, dass es all jene Unzulänglichkeiten der technischen Basis der 4er-Version vermeidet und neue, leistungsstarke Konzepte einführt, die es ermöglichen, moderne und zeitgemäße Webapplikationen zu erschaffen. Man hatte anfangs zwar darüber nachgedacht, ob dieses Ziel auch möglich wäre, wenn man den bestehenden Code der 4er-Version anpasst, hat aber dann bald feststellen müssen, dass dies aufgrund der dort verwendeten Architektur nicht möglich ist.

So hat man beschlossen, TYPO3 5.x komplett neu zu entwickeln, und dabei festgestellt, dass es sinnvoll ist, dieses Projekt in zwei Teile zu trennen - in das zugrunde liegende PHP-Webapplikations-Framework FLOW3 und das Content-Management-System TYPO3 5 - das lediglich" eine sogenannte Komponente, also eine Art Extension für FLOW3 ist.

Mit dem Architekturwechsel einher geht aber auch ein relativ dramatischer Sachverhalt. Während es für das Kernsystem letztlich egal ist, wenn der komplette Quellcode ausgetauscht wird, trifft dies für die Extension nicht zu. Es gibt momentan weit über 3500 Extensions für TYPO3 4.x. Keine dieser Extensions kann in der Version TYPO3 5.x wieder verwendet werden. Letztlich müssen alle (oder zumindest die wichtigsten) Extensions komplett neu geschrieben werden. Dies muss freilich nicht sofort geschehen. Im Oktober 2008 wurde von den Kernentwicklern beider TYPO3-Entwicklungszweige das sogenannte Berlin Manifesto1 verabschiedet.

Dieses besagt zwar grundsätzlich, dass die Entwicklung von TYPO3 4.x noch einige Jahre weitergehen wird und man somit mit der klassischen Art, Extensions zu schreiben, ebenso lange weitermachen könnte, aber die Erfahrung zeigt, dass Kunden sicherlich bei neuen Projekten direkt auch auf die zukunftsträchtigere Technologie der Version 5.x setzen wollen. Immerhin wird oftmals viel Geld in die Entwicklung gesteckt, und daher will man sicher sein, dieses auch bei einem eventuellen Technologiewechsel nicht erneut investieren zu müssen. Dies geht allerdings natürlich erst, wenn eine stabile Version von TYPO3 5.x erschienen ist. Bestehende Projekte werden sicherlich nicht bei Erscheinen der neuen Version gleich neu aufgebaut werden.

Ebenso befinden sich Projekte, die jetzt begonnen werden sollen, in der Zwickmühle. Die neue Version von TYPO3 ist noch nicht stabil, aber die "alte" Version erscheint nicht zukunftsträchtig genug. Hier wäre es sinnvoll, eine Möglichkeit zu haben, direkt in TYPO3 4.x Extensions nach den neuen Methoden und Paradigmen der Version 5.x zu schreiben, die man dann später - bei Erscheinen der stabilen Version von TYPO3 5.x - mit geringem änderungsaufwand wieder verwenden kann. Damit könnte man gleich hier und heute anfangen, neue Entwicklungen zu starten, die aber auch in der Zukunft einsetzbar sind."
Inhaltsverzeichnis
Inhalt6
Vorwort18
Teil I Klassische Extensionprogrammierung20
1 Grundlagen22
1.1 Aufbau und Struktur von TYPO322
1.2 Aufbau einer Extension25
1.3 Arten und Einteilung von Extensions26
1.4 Der Extension-Key27
1.5 TYPO3 Coding Guidelines28
1.5.1 Namespace29
1.5.2 PHP-Regeln30
1.5.3 Dateistruktur31
1.5.4 PHP-Syntax34
1.5.5 phpDoc240
1.5.6 Changelog41
2 Eine Extension planen undentwickeln42
2.1 Extensions planen42
2.1.1 Wir planen eine Blog-Extension43
2.2 Der Kickstarter45
2.2.1 Die Datenbank47
2.2.2 Datenbanktabellen und Formulare – eine Erklärung53
2.2.3 Extend existing Tables55
2.2.4 Frontend-Plug-ins56
2.2.5 Backend-Module59
2.2.6 Integrate in existing Modules60
2.2.7 Clickmenu items60
2.2.8 Services61
2.2.9 Static TypoScript code62
2.2.10 TSconfig62
2.2.11 Die Extension erstellen63
2.3 Extension-Konfiguration mit ext_emconf.php64
2.4 Die weiteren Dateien der Extension69
2.4.1 Verzeichnis doc69
2.4.2 Verzeichnis mod#69
2.4.2.1 Datei mod#/conf.php69
2.4.2.2 Datei mod#/index.php70
2.4.2.3 Datei mod#/locallang.xml70
2.4.2.4 Datei mod#/locallang_mod.xml70
2.4.3 Verzeichnis modfunc#70
2.4.3.1 Datei modfunc#/class.tx_extkey_modfunc1.php70
2.4.4 Verzeichnis pi#71
2.4.4.1 Datei pi#/class.tx_extkey_pi#.php71
2.4.4.2 Datei pi#/class.tx_extkey_pi#_wizicon.php71
2.4.4.3 Datei pi#/ce_wiz.gif71
2.4.4.4 Datei pi#/clear.gif71
2.4.4.5 Datei pi#/static/setup.txt71
2.4.5 Verzeichnis Static71
2.4.6 Datei Changelog72
2.4.7 Datei README.txt72
2.4.8 Datei ext_icon.gif72
2.4.9 Datei ext_localconf.php72
2.4.10 Datei ext_tables.php72
2.4.11 Datei ext_tables.sql73
2.4.12 Datei ext_tables_static+adt.sql74
2.4.13 Dateien Icon_tx_extkey_tabellenname.gif75
2.4.14 Datei locallang.xml75
2.4.15 Datei locallang_db.xml75
2.4.16 Datei tca.php75
2.4.16.1 Checkboxen76
2.4.16.2 Erweiterte Input-Felder77
2.4.16.3 Validierung mit eval77
2.4.16.4 Benutzerdefinierte Validierung79
2.4.16.5 Bildupload-Feld79
2.4.16.6 Textfelder mit RTE80
2.4.16.7 M-M-Relationen81
3 Backend-Module erstellen84
3.1 Module konfigurieren und im Hauptmenü anordnen84
3.2 Einen eigenen Navigationsbaum erstellen88
3.3 Backend-Modul erstellen94
3.3.1 Das Modul initialisieren94
3.3.2 Den Modulinhalt aufbauen98
3.3.3 Extension-Konfiguration über ext_conf_template.txt99
3.3.4 Backend-Formulare aufrufen101
3.3.5 Eine Datensatzliste mit Bearbeitungsfunktionen erstellen103
3.3.5.1 Einen Pagebrowser hinzufügen106
3.3.6 Aufgabe: Module für Kommentare, Blog und Blogroll109
3.3.6.1 Tipps109
3.3.6.2 Zusatzaufgabe110
3.4 Backend User Object – $BE_USER110
3.5 Das Systemlog111
4 Frontend-Plug-ins114
4.1 Das Frontend-Plug-in im Überblick114
4.2 Feldinhalte für die Ausgabe aufbereiten122
4.2.1 Das Bild für Teaser Image123
4.2.2 Ausgabe des Haupttextes in der Listenansicht, wennerwünscht124
4.2.3 Haupttext mit RTE formatieren124
4.2.4 Haupttext statt Teasertext anzeigen, falls dieser nichtverfügbar ist125
4.2.5 Verlinken des Autorennamens mit der Mail-Adresse desAutors125
4.2.6 Kategorien als Namen anzeigen und verlinken (Relationen)126
4.3 HTML-Templates für das Plug-in128
4.4 Die Kommentarfunktion mit AJAX und eID133
4.4.1 Ausgabe vorhandener Kommentare134
4.4.2 Das Kommentarformular hinzufügen137
4.5 Was sind Hooks?142
4.6 Flexforms144
4.6.1 Erzeugen der Flexform145
4.7 Das Plug-in pi2151
5 Dokumentation und Abschluß152
5.1 Code dokumentieren mit extdeveval152
5.2 Extension-Dokumentation schreiben153
5.2.1 Die Vorlage154
5.2.2 Der Aufbau der Dokumentation154
5.2.3 Vorlagenstile155
5.2.4 Die Dokumentation verfassen155
5.3 Upload ins TER156
Teil II Funktionsreferenz zur klassischenExtensionprogrammierung158
6 Datenbank160
6.1 $GLOBALS['TYPO3_DB']160
6.1.1 exec_SELECTquery160
6.1.2 exec_SELECT_queryArray160
6.1.3 exec_SELECTgetRows161
6.1.4 exec_SELECT_mm_query161
6.1.5 exec_INSERTquery162
6.1.6 exec_UPDATEquery162
6.1.7 exec_DELETEquery162
6.1.8 sql_fetch_assoc162
6.1.9 sql_fetch_row163
6.1.10 searchQuery163
6.1.11 listQuery163
6.1.12 splitGroupOrderLimit164
6.1.13 quoteStr164
6.1.14 fullQuoteStr164
6.1.15 fullQuoteArray165
6.1.16 escapeStrForLike165
6.1.17 cleanIntArray166
6.1.18 cleanIntList166
6.1.19 debug_lastBuiltQuery166
6.2 tslib_pibase167
6.2.1 pi_exec_query167
6.2.2 pi_getPidList168
6.2.3 pi_getRecord169
6.2.4 pi_prependFieldsWithTable169
6.3 cObj169
6.3.1 DBgetDelete169
6.3.2 DBgetInsert170
6.3.3 DBgetUpdate171
6.3.4 enableFields172
7 Dateisystem174
7.1 t3lib_div174
7.1.1 dirname174
7.1.2 fixWindowsFilePath174
7.1.3 formatSize175
7.1.4 get_dirs175
7.1.5 getAllFilesAndFoldersInPath176
7.1.6 getFileAbsFileName177
7.1.7 getFilesInDir177
7.1.8 getURL178
7.1.9 isAbsPath178
7.1.10 isAllowedAbsPath178
7.1.11 mkdir179
7.1.12 mkdir_deep179
7.1.13 removePrefixPathFromList179
7.1.14 resolveBackPath180
7.1.15 rmdir180
7.1.16 split_fileref181
7.1.17 tempnam181
7.1.18 unlink_tempfile181
7.1.19 upload_copy_move181
7.1.20 upload_to_tempfile182
7.1.21 verifyFilenameAgainstDenyPattern182
7.1.22 writeFile183
7.1.23 writeFileToTypo3tempDir183
8 Strings, Arrays undUmgebungsvariablen184
8.1 Allgemeine Funktionen184
8.1.1 _GET184
8.1.2 _GETset184
8.1.3 _GP185
8.1.4 _POST185
8.1.5 callUserFunction185
8.1.6 clientInfo186
8.1.7 compat_version186
8.1.8 compileSelectedGetVarsFromArray187
8.1.9 getHostname187
8.1.10 getIndpEnv187
8.1.11 getThisUrl187
8.1.12 linkThisScript188
8.1.13 linkThisUrl188
8.1.14 locationHeaderUrl188
8.1.15 makeInstance189
8.1.16 makeInstanceService189
8.1.17 rmFromList189
8.1.18 sysLog190
8.2 String-Funktionen190
8.2.1 calcParenthesis190
8.2.2 cmpFQDN190
8.2.3 cmpIP191
8.2.4 convUmlauts191
8.2.5 csvValues191
8.2.6 deHSCentities192
8.2.7 expandList192
8.2.8 fixed_lgd192
8.2.9 fixed_lgd_pre193
8.2.10 formatForTextarea193
8.2.11 generateRandomBytes193
8.2.12 get_tag_attributes194
8.2.13 htmlspecialchars_decode194
8.2.14 implodeArrayForUrl194
8.2.15 implodeAttributes195
8.2.16 inList195
8.2.17 int_from_ver196
8.2.18 intInRange196
8.2.19 intval_positive196
8.2.20 isFirstPartOfStr197
8.2.21 md5int197
8.2.22 milliseconds198
8.2.23 modifyHTMLColor198
8.2.24 modifyHTMLColorAll198
8.2.25 normalizeIPv6199
8.2.26 removeXSS199
8.2.27 revExplode199
8.2.28 rm_endcomma200
8.2.29 shortMD5200
8.2.30 split_tag_attributes200
8.2.31 splitCalc201
8.2.32 strtolower201
8.2.33 strtoupper202
8.2.34 substUrlsInPlainText202
8.2.35 testInt203
8.2.36 trimExplode203
8.2.37 uniqueList204
8.2.38 validEmail204
8.2.39 validIP204
8.2.40 validIPv4205
8.2.41 validIPv6205
8.3 Array-Funktionen205
8.3.1 addSlashesOnArray205
8.3.2 array_merge206
8.3.3 array_merge_recursive_overrule206
8.3.4 array2json207
8.3.5 array2xml207
8.3.6 arrayToLogString208
8.3.7 explodeUrl2Array209
8.3.8 inArray209
8.3.9 print_array209
8.3.10 removeArrayEntryByValue210
8.3.11 slashArray210
8.3.12 view_array211
8.3.13 xml2array211
8.3.14 xml2tree212
8.3.15 xmlGetHeaderAttribs213
8.4 String-Funktionen in Frontend-Plug-ins214
8.4.1 calcAge214
8.4.2 checkEmail214
8.4.3 codeString214
8.4.4 encryptEmail215
8.4.5 HTMLcaseshift215
8.4.6 keywords215
8.4.7 linebreaks216
8.4.8 processParams216
8.4.9 uniqueHash217
8.4.10 URLqMark217
9 Bilder218
9.1 Einbinden218
9.2 Bearbeiten219
9.2.1 Bild umrechnen (fürs Web optimieren)219
9.2.2 Abmessungen ändern220
9.2.3 Zuschneiden220
9.2.4 Graustufen221
9.3 Erzeugen222
9.3.1 Bild in bestehendes Bild einfügen222
9.3.2 Text erzeugen223
10 AJAX im Frontend224
10.1 eID224
10.1.1 Konfiguration224
10.1.2 Basisdatei225
10.2 Zusammenspiel AJAX & eID225
10.2.1 Aufbau der XML-Response225
10.2.2 AJAX-Request und Verarbeitung226
11 Frontend-Plug-ins228
11.1 Cache228
11.1.1 cacheExpires228
11.1.2 clearPageCacheContent228
11.1.3 clearPageCacheContent_pidList228
11.1.4 get_cache_timeout229
11.1.5 set_cache_timeout_default229
11.1.6 set_no_cache229
11.2 Content-Elemente230
11.2.1 cImage230
11.2.2 cleanFormName230
11.2.3 cObjGet230
11.2.4 cObjGetSingle231
11.2.5 currentPageUrl231
11.2.6 fileResource232
11.2.7 getImgResource232
11.2.8 getSlidePids232
11.2.9 gifBuilderTextBox232
11.2.10 stdWrap233
11.3 Links234
11.3.1 baseUrlWrap234
11.3.2 getMailTo234
11.3.3 getTypoLink235
11.3.4 getTypoLink_URL235
11.3.5 http_makelinks236
11.3.6 imageLinkWrap236
11.3.7 mailto_makelinks236
11.3.8 pi_getPageLink237
11.3.9 pi_linkToPage237
11.3.10 pi_linkTP238
11.3.11 pi_linkTP_keepPIvars238
11.3.12 pi_linkTP_keepPIvars_url238
11.3.13 pi_openAtagHrefInJSwindow239
11.3.14 prefixLocalAnchorsWithScript239
11.4 Listen239
11.4.1 pi_list_browseresults240
11.4.2 pi_list_linkSingle241
11.4.3 pi_list_makelist241
11.4.4 pi_list_modeSelector242
11.4.5 pi_list_searchBox242
11.5 JavaScript243
11.5.1 additionalHeaderData243
11.5.2 additionalJavaScript243
11.5.3 JSeventFuncCalls244
11.5.4 minifyJavaScript244
11.5.5 quoteJSvalue245
11.5.6 rawUrlEncodeJS245
11.5.7 setJS245
11.5.8 wrapJS246
11.6 CSS246
11.6.1 additionalCSS246
11.6.2 additionalHeaderData247
11.6.3 pi_getClassName247
11.6.4 pi_setClassStyle247
11.6.5 setCSS248
11.7 Mehrsprachigkeit249
11.7.1 getLLL249
11.7.2 pi_getLL249
11.7.3 readLLfile250
11.8 Umgebungsvariablen und allgemeine Funktionen250
11.8.1 absRefPrefix250
11.8.2 additionalHeaderData251
11.8.3 all251
11.8.4 anchorPrefix252
11.8.5 applicationData252
11.8.6 ATagParams252
11.8.7 baseUrl253
11.8.8 baseUrlWrap253
11.8.9 beUserLogin253
11.8.10 clientInfo253
11.8.11 content254
11.8.12 defaultBodyTag254
11.8.13 domainStartPage254
11.8.14 extTarget255
11.8.15 fePreview255
11.8.16 id255
11.8.17 imagesOnPage256
11.8.18 intTarget256
11.8.19 lang256
11.8.20 lastImageInfo257
11.8.21 loginUser257
11.8.22 no_cache257
11.8.23 page258
11.8.24 printError258
11.8.25 rootLine259
11.8.26 siteScript259
11.8.27 tmpl->config, tmpl->setup260
11.8.28 type260
11.8.30 uniqueString261
11.9 Konfiguration mit Flexforms261
11.9.1 Erstellen einer Plug-in_Flexform261
11.9.2 Auslesen der Formulardaten262
11.10 Konfiguration mit TypoScript262
11.11 Konfiguration im Extension-Manager263
12 Frontend-User & Sessions264
12.1 Frontend-User264
12.1.1 Daten des aktuell angemeldeten Users264
12.2 Sessions264
12.2.1 Daten speichern264
12.2.2 Daten auslesen265
12.2.3 Warenkorb aufbauen265
13 Backend & Services268
13.1 Eigene Flexforms268
13.1.1 Mehrsprachigkeit269
13.1.2 Tabs270
13.1.3 Elemente271
13.1.4 Flexform-Daten im Frontend275
13.2 Backend-Module276
13.2.1 Dokumententypen für $this->doc276
13.2.2 TypoScript einer Seite auslesen276
13.2.3 AJAX im Backend276
13.3 Services278
13.4 cli278
13.5 Debugging279
13.5.1 debug279
13.5.2 debug_ordvalue280
13.5.3 debug_trail280
13.5.4 debugRows280
13.5.5 devLog281
Teil III Extbase und Fluid282
14 Der neue Weg der Extension-Programmierung284
14.1 Grundlagen der objektorientierten Programmierung286
14.1.1 Klassen und Objekte286
14.1.2 Vererbung von Klassen290
14.1.3 Kontrollierte Vererbung – abstrakte und finale Klassen292
14.1.4 Sichtbarkeiten: public, private und protected293
14.1.5 Interfaces294
14.1.6 Type Hints296
14.1.7 Statische Methoden und Eigenschaften296
14.1.8 Namespaces297
14.2 Neue Konzepte298
14.2.1 Domain Driven Design299
14.2.2 Model-View-Controller300
14.2.3 Modellierung301
14.2.4 Gemeinsamens Vokabular – Ubiquitous Language301
14.2.5 Die Elemente des Modells304
14.2.5.1 Entities (Entitäten)304
14.2.5.2 Value Objects304
14.2.5.3 Services304
14.2.5.4 Aggregates304
14.2.5.5 Factories305
14.2.5.6 Repositories305
15 Ein Rundgang durchs System306
15.1 Installation von Extbase und Fluid306
15.2 Installation der Extension blog_example308
15.3 Datenstruktur im Blog-Example310
15.4 Namenskonventionen312
15.4.1 Verzeichnis- und Dateinamen313
15.4.2 Klassennamen313
15.4.3 Controller und Actions314
15.5 Die Dateistruktur im Extension-Root-Verzeichnis314
15.5.1 Die Datei ext_emconf.php315
15.5.2 Die Datei ext_tables.php316
15.5.3 Die Datei ext_localconf.php320
15.5.4 Die Dateien ext_tables.sql und ext_icon.gif321
15.6 Die Verzeichnisstruktur321
15.6.1 Das Verzeichnis Classes322
15.6.2 Das Verzeichnis Configuration323
15.6.3 Das Verzeichnis Module324
15.6.4 Das Verzeichnis Resources324
15.6.5 Weitere Verzeichnisse324
15.7 Der prinzipielle Ablauf324
15.7.1 Aufruf des Dispatchers (Schritt 1)325
15.7.2 Aufruf des Controllers (Schritt 2)328
15.7.3 Ansprechen des Respositorys (Schritt 3)328
15.7.4 Zurückliefern der Blog-Objekte (Schritt 4)328
15.7.5 Das Objekt wird dem View zugeordnet (Schritt 5)330
15.7.6 Rückgabe der Template-Ausgabe an den Controller (Schritt 6)332
15.7.7 Rückgabe der Ausgabe an den Dispatcher (Schritt 7)333
15.7.8 Rückgabe der Ausgabe an TYPO3 (Schritt 8)333
16 Entwicklung eines eigenenPlug-ins334
16.1 Aufbau einer minimal funktionstüchtigen Extension334
16.1.1 Extension-Key334
16.1.2 Verzeichnisse anlegen335
16.1.3 Die Datei ext_emconf.php335
16.1.4 Die Dateien ext_localconf.php und ext_tables.php336
16.1.5 Einrichten eines Standard-Controllers337
16.1.6 Installieren der Extension und das erste Erfolgserlebnis338
16.2 Hinzufügen eines Views339
16.3 Entitäten einführen341
16.4 Daten persistieren (Datenspeicher)343
16.4.1 Datenbankstruktur – die Datei ext_tables.sql344
16.4.2 Datenbankstruktur – das TCA348
16.5 Anlegen eines Repositorys352
16.6 Anlegen einer neuen Action354
16.6.1 Anlegen der Action addAction()355
16.7 Daten per Formular eingeben und auswerten356
16.8 Objekte aus dem Repository entfernen357
16.8.1 Zufügen der Action delete in der Konfiguration357
16.8.2 Anpassen der Template-Datei index.html357
16.8.2.1 Zufügen der Action delete im Blog-Controller358
16.9 Update von Objekten358
16.9.1 Edit- und Update-Action hinzufügen358
16.10 Der Query-Manager360
16.11 Eingabevalidierung362
16.12 Validatoren362
16.12.1 Vordefinierte Validatoren362
16.12.2 Eigene Validatoren363
16.12.3 Ausgabe der Fehler366
16.12.4 Optionale Argumente366
16.13 Relationen zu anderen Tabellen367
16.13.1 Erweiterung des TCA367
16.13.2 Die Domain-Klasse Tx_Simpleblog_Domain_Model_Post368
16.13.3 Registrieren der Actions in der Datei ext_localconf.php369
16.13.4 Erstellung des Post-Controllers369
16.13.5 Neue Templates und Template-Änderungen371
16.13.6 Ändern der Blog-Identity373
16.13.7 Aufruf der Extension im Frontend375
16.14 Relationen zu anderen Tabellen m:n375
16.15 Mehrsprachigkeit zufügen380
16.16 Konfiguration mittels TypoScript382
16.17 Backend-Module mit Extbase384
16.18 Der Extbase-Kickstarter385
16.18.1 Installation des Extbase-Kickstarters386
16.18.2 Überblick über den Arbeitsbereich387
16.18.3 Eingabe der Extension-Konfiguration388
16.18.4 Modellierung389
16.18.4.1 Anlegen des Blog-Objekts390
16.18.5 Anlegen des Post-Objekts391
16.18.6 Anlegen des Tag-Objekts391
16.18.7 Relationen festlegen392
16.19 Weitere Extbase-Interna393
16.19.1 StoragePid393
16.19.1.1 Schreibzugriffe394
16.19.1.2 Aktualisieren394
16.19.1.3 Lesen395
16.19.2 MVC-Request395
16.19.3 FlashMessages realisieren396
17 Die Fluid-Template-Engine398
17.1 Vorbereitung399
17.2 Basissyntax und einfache Ausgabe401
17.2.1 Arrays401
17.2.2 Objekte402
17.3 Fluid ViewHelper-Syntax403
17.3.1 Namespace (Namensraum)403
17.3.2 Argumente404
17.3.2.1 Boolesche Ausdrücke404
17.3.2.2 Komplexe boolesche Ausdrücke405
17.3.2.3 Arrays405
17.4 ViewHelper-Übersicht406
17.4.1 alias406
17.4.2 base407
17.4.3 cObject407
17.4.4 count408
17.4.5 cycle408
17.4.6 debug409
17.4.7 else409
17.4.8 for409
17.4.9 form410
17.4.9.1 form.checkbox412
17.4.9.2 form.error413
17.4.9.3 form.hidden413
17.4.9.4 form.password414
17.4.9.5 form.radio415
17.4.9.6 form.select416
17.4.9.7 form.submit418
17.4.9.8 form.textarea419
17.4.9.9 form.textbox420
17.4.9.10 form.upload420
17.4.10 format421
17.4.10.1 format.crop421
17.4.10.2 format.currency422
17.4.10.3 format.date#422
17.4.10.4 format.html423
17.4.10.5 format.nl2br424
17.4.10.6 format.number424
17.4.10.7 format.padding424
17.4.10.8 format.printf425
17.4.11 groupedFor425
17.4.12 if426
17.4.13 image427
17.4.14 layout428
17.4.15 link428
17.4.15.1 link.action428
17.4.15.2 link.email430
17.4.15.3 link.external430
17.4.15.4 link.page432
17.4.16 render432
17.4.17 renderFlashMessages433
17.4.18 section434
17.4.19 then434
17.4.20 translate434
17.4.21 uri435
17.5 Erstellen eines eigenen ViewHelpers435
17.5.1 Der Dummytext-ViewHelper436
17.5.2 Zugriff auf die übergebenen Argumente437
17.5.3 Zufügen von Argumenten438
17.5.4 Tag-basierende ViewHelper438
17.5.5 Der Variablen-Container439
17.6 Verwendung von Fluid in klassischen Extensions440
17.7 Layouts und Partials441
Register446

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

Prozessübergreifendes Projektmanagement

E-Book Prozessübergreifendes Projektmanagement
Grundlagen erfolgreicher Projekte Format: PDF

Projektmanagement ist in Zeiten von enger werdenden Projektbudgets und Projektzeitplänen eine zunehmende Herausforderung geworden. Die Autoren geben wertvolle Hilfestellungen in Krisensituationen und…

Prozessübergreifendes Projektmanagement

E-Book Prozessübergreifendes Projektmanagement
Grundlagen erfolgreicher Projekte Format: PDF

Projektmanagement ist in Zeiten von enger werdenden Projektbudgets und Projektzeitplänen eine zunehmende Herausforderung geworden. Die Autoren geben wertvolle Hilfestellungen in Krisensituationen und…

C++ mit Microsoft Visual C++ 2008

E-Book C++ mit Microsoft Visual C++ 2008
Einführung in Standard-C++, C++/CLI und die objektorientierte Windows .NET-Programmierung Format: PDF

Die Einführung in die Programmiersprachen C++, C++/CLI und die Windows-Programmierung verbindet das Buch mit Visual Studio und richtet sich damit an Anfänger wie an erfahrene C++-Programmierer. Alle…

SPS-Programmierung mit IEC 61131-3

E-Book SPS-Programmierung mit IEC 61131-3
Konzepte und Programmiersprachen, Anforderungen an Programmiersysteme, Entscheidungshilfen Format: PDF

Seit 1995 führt das Standardwerk umfassend in die Konzepte der internationalen Norm für Programmiersysteme von speicherprogrammierbaren Steuerungen ein. Den Autoren gelingt es, schwierige Inhalte…

Profikurs ABAP®

E-Book Profikurs ABAP®
Konkrete, praxisorientierte Lösungen - Tipps, Tricks und jede Menge Erfahrung Format: PDF

Professionelle und sichere Anwendungsentwicklung unter SAP R/3® ist kein Zufall, sondern eine Sache der Erfahrung. Das Resultat: Tricks und Kniffe, von denen auch Sie als ABAP® Professional…

Management von IT-Projekten

E-Book Management von IT-Projekten
Von der Planung zur Realisierung Format: PDF

Auch wenn Verfahren des Projektmanagements noch immer nicht konsequent eingesetzt werden - gerade für IT-Manager und IT-Entwickler sind Kenntnisse des Projektmanagements und seiner…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

C und Linux

E-Book C und Linux
Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen Format: PDF

Wer Erfahrungen in der C-Programmierung hat, kann die vielen Möglichkeiten von Linux kennen lernen und ausschöpfen. Dieses Buch zeigt Ihnen wie und enthält praktische Lösungen f…

Moderne C-Programmierung

E-Book Moderne C-Programmierung
Kompendium und Referenz Format: PDF

Dieses Buch wendet sich an Entwickler, die bereits über erste Erfahrungen in der Programmierung verfügen. Es fördert den effizienten, strukturierten Umgang mit C. Das vorgestellte Detailwissen hilft…

Weitere Zeitschriften

Das Grundeigentum

Das Grundeigentum

Das Grundeigentum - Zeitschrift für die gesamte Grundstücks-, Haus- und Wohnungswirtschaft. Für jeden, der sich gründlich und aktuell informieren will. Zu allen Fragen rund um die Immobilie. Mit ...

DER PRAKTIKER

DER PRAKTIKER

Technische Fachzeitschrift aus der Praxis für die Praxis in allen Bereichen des Handwerks und der Industrie. “der praktiker“ ist die Fachzeitschrift für alle Bereiche der fügetechnischen ...

DSD Der Sicherheitsdienst

DSD Der Sicherheitsdienst

Der "DSD – Der Sicherheitsdienst" ist das Magazin der Sicherheitswirtschaft. Es erscheint viermal jährlich und mit einer Auflage von 11.000 Exemplaren. Der DSD informiert über aktuelle Themen ...

IT-BUSINESS

IT-BUSINESS

IT-BUSINESS ist seit mehr als 25 Jahren die Fachzeitschrift für den IT-Markt Sie liefert 2-wöchentlich fundiert recherchierte Themen, praxisbezogene Fallstudien, aktuelle Hintergrundberichte aus ...

filmdienst#de

filmdienst#de

filmdienst.de führt die Tradition der 1947 gegründeten Zeitschrift FILMDIENST im digitalen Zeitalter fort. Wir begleiten seit 1947 Filme in allen ihren Ausprägungen und Erscheinungsformen.  ...