TYPO3 CMS Certified Developer (Deutsch)
TYPO3 CMS Certified Developer (Deutsch)
Vorbereitung auf die Prüfung der TYPO3 Association (1. Auflage)
Über das Buch
„TYPO3 CMS Certified Developer“ ist eine neue, von der TYPO3 Association im Jahr 2016 entwickelte Zertifizierung für all jene, die ihre TYPO3-Kenntnisse im Bereich der TYPO3 Extension-Programmierung testen und dokumentieren möchten. Die anspruchsvolle Prüfung umfasst Themen wie Architecture, TYPO3 Internals (FlexForms, TCA, I18n, ...), Fluid, Security, Errors and Validations, Caching, Repositories and Query Manager, Exception handling and Debugging, Documentation, Miscellaneous und vieles mehr.
Freiberuflern wie Agenturen dient das Zertifikat als Qualifikationsnachweis bei größeren Kundenprojekten. Gleichzeitig erhalten Unternehmen ein objektives Kriterium für die Auswahl ihrer Dienstleister.
Die Prüfung - ebenso wie das Buch - deckt die Version TYPO3 CMS 7 LTS ab - damit sind Sie auf dem aktuellen Stand und können sich im Selbststudium oder im Rahmen von Schulungen optimal vorbereiten.
Orientiert am Fragenstil der Originalprüfung, behandelt der bekannte TYPO3-Spezialist Patrick Lobacher alle relevanten Themenbereiche im Detail. Übungsfragen, Lösungen und fundierte Erläuterungen vermitteln einen authentischen Eindruck der erwarteten Kenntnisse und vervollständigen Ihr Wissen.
Inhaltsverzeichnis
-
1. Vorbemerkung
- 1.1 Danksagung
- 1.2 Changelog
-
2. Einführung
- 2.1 Bewertung der Qualität von TYPO3-Dienstleistungen
- 2.2 TYPO3 CMS Certified Developer
- 2.3 Die Zertifizierung
- 2.4 Zur Benutzung dieses Buches
-
3. Architecture
- 3.1 Welche Aussagen über Plugins und Module sind korrekt? (2)
- 3.2 Welche Aussagen über Extbase-Controller sind korrekt? (2)
- 3.3 Du willst eine List-Action mit einem View verbinden - was musst Du hierfür tun? (2)
- 3.4 Welche Charakteristika haben Controller? (2)
- 3.5 Wie kann man im Domain-Model auf TypoScript-Einstellungen zugreifen? (1)
- 3.6 Welche Aussage über Domain-Models ist richtig? (1)
- 3.7 Welche der folgenden Konstrukte sind wirksam? (2)
- 3.8 Welche Annotation wird benötigt, um eine Relation vom Typ 1:n zu speichern? (1)
- 3.9 Welche Relationen sind mit IRRE nicht möglich? (1)
- 3.10 Welche Methode wird offiziell empfohlen, um im Controller ein Objekt zu erhalten? (1)
- 3.11 Was wird benötigt, um einen Scheduler-Task zu erstellen? (3)
- 3.12 Wie wird die Steuereinheit im Extbase MVC bezeichnet? (1)
- 3.13 Welche Vendor-Namen sind innerhalb von Extbase erlaubt? (2)
-
3.14 Welche Funktion hat die Datei
ext_localconf.php
? (2) - 3.15 Wie erhält man ein Singleton in einem Controller? (1)
- 3.16 Was sind “Signals”? (1)
- 3.17 Welche Verzeichnisse gibt es per Konvention? (2)
-
3.18 Wo kann ich nicht per Default mittels
$this->objectManager
auf den ObjectManager zugreifen ? (3) - 3.19 Wie wird ein Slot an ein Signal gebunden? (1)
-
3.20 Wie kann man die Tabelle
fe_users
in einer eigenen Extension ansprechen? (2) - 3.21 Welche Signale sind in Extbase per Default vorhanden? (3)
- 3.22 Was wird benötigt, um die globale Category-API in eigenen Extensions verwenden zu können? (2)
- 3.23 Wie wird der sogenannte JSON-View verwendet? (1)
- 3.24 Wie ist es möglich ein nicht-persistentes Objekt aus einem GET-Request heraus zu erstellen? (1)
- 3.25 In welcher Datei werden eigene TypeConverter registriert? (1)
- 3.26 Was wird benötigt, um die Seiteneigenschaften um ein eigenes Feld zu erweitern? (2)
- 3.27 Welche Aussagen über den View innerhalb des Controllers sind korrekt? (2)
-
3.28 Was ist der Unterschied zwischen den Controller-Methoden
$this->forward()
und$this->redirect()
? (2) -
3.29 Wie wird ein HTTP-Status-Code
400
ausgegeben? (1) - 3.30 Was wird benötigt, um einen neuen TYPO3 CLI-Befehl zu etablieren? (2)
- 3.31 Wie kann der Application Context geändert werden? (1)
-
3.32 Wie kann man ein Live-System und ein Staging-System unterscheiden, die beide den Application-Context
Production
haben? (1) - 3.33 Wie kann ein Argument im MVC gesetzt werden? (1)
-
3.34 Wenn man in Fluid
{object.property}
verwendet, wie darf die Domain-Model-Methode zum Ermitteln des Wertes heißen? (3)
-
4. TYPO3-Internal (FlexForms, TCA, I18n, …)
- 4.1 Welche Regeln gelten für den Extension-Key? (1)
- 4.2 Was ist beim mehrmaligen Einsatz eines Plugins auf einer Seite zu beachten? (1)
- 4.3 Wie kann ein Feld im Backend vor einem Editor versteckt werden? (2)
- 4.4 Was sind “Switchable Controller Actions”? (1)
- 4.5 Welche Schritte sind notwendig, um eine FlexForm für ein Plugin zu laden? (3)
-
4.6 Welche Unterschlüssel des Arrays
$EM_CONF[...]
in der Dateiext_emconf.php
müssen unbedingt angegeben werden? (1) - 4.7 Welche Formatierungen müssen gemäß “PSR Coding Guidelines” eingehalten werden? (2)
- 4.8 Welche Formatierungen müssen gemäß TYPO3 CMS Coding Guidelines eingehalten werden? (4)
-
4.9 Welchen Status gibt es in der Datei
ext_emconf.php
für den Unterschlüsselstate
? (2) - 4.10 Welche Aussagen hinsichtlich von XLIFF-Dateien sind korrekt? (2)
- 4.11 Wie kann das Repository dazu gebracht werden, gelöschte Datensätze nicht zurückzugeben? (1)
- 4.12 Welche Aussagen über Versionierung sind korrekt ? (2)
- 4.13 Welcher Wert muss in der Datenbank gesetzt sein, damit ein Datensatz in allen Sprachen zur Verfügung steht? (1)
-
4.14 Was passiert bei der TypoScript-Einstellung
config.sys_language_mode = strict
? (1) - 4.15 Wie kann man im Controller auf FlexForm-Werte zugreifen? (1)
-
4.16 Was ist die Charakteristik der Methoden
redirect()
undforward()
im Controller? (2) - 4.17 In welcher Datei wird die Inklusion der FlexForm durchgeführt? (1)
- 4.18 Wie kann in einer FlexForm ein übersetztes Label realisiert werden? (1)
- 4.19 Welche Priorität haben Sprachdateien in Extbase standardmäßig? (1)
- 4.20 Was wird benötigt, um ein statisches TypoScript zur Verfügung zu stellen? (2)
-
4.21 Nehmen wir an, die Extension heißt
simpleblog
und das Domain-ModelBlog
. In welcher Datei wird das zugehörige TCA gespeichert? (1) -
4.22 Was passiert, wenn man in einer eigenen Extension das TCA der Tabelle
pages
in der Dateiext_tables.php
um ein Feld erweitert? (1) -
4.23 Im Backend werden im Model “List” Datensätze angezeigt. Wie erreicht man im TCA, dass in der Tabelle
tx_simpleblog_domain_model_blog
der Inhalt der Spalteshortdescr
auf der linken Seite angezeigt wird? (1) - 4.24 Wie kann eine Backend-Route hinzugefügt werden? (1)
-
5. Fluid
- 5.1 Welche Ausgabe hat folgendes Fluid-Template? (1)
- 5.2 Welche Ausgabe hat folgendes Fluid-Template? (1)
- 5.3 Welche Ausgabe hat folgendes Fluid-Template? (1)
-
5.4 Wie kann man die Variable
var
(die im Controller an den View übergeben wurde) an ein Partial übergeben? (2) - 5.5 Welche Inline-Syntax ist korrekt? (1)
- 5.6 Wie kann man in Fluid kommentieren, sodass der auskommentierte Inhalt nicht im Quelltext der Seite sichtbar ist? (2)
-
5.7 Was muss in einer FlexForm stehen, damit das Fluid-Snippet
{settings.headline}
darauf zugreifen kann? (1) - 5.8 Welche Aussagen über Widgets sind richtig? (2)
-
5.9 Für welche Ausgabe sorgt
property
im ViewHelper<f:form.textfield property="title" />
, wenn dasobject
Attribut des Form-ViewHelperblog
lautet, die ExtensionSimpleblog
und das PluginBloglisting
ist? (1) -
5.10 Welche Argumente hat der ViewHelper
<f:flashMessage>
? (1) - 5.11 Wie lautet die korrekte Syntax für eine Namespace-Angabe im Fluid? (1)
-
5.12 Wie kann der Inhalt der Variablen
blog
in ein Partial transportiert werden? (2) - 5.13 Wie kann in Fluid erreicht werden, dass ein großes Bild auf 100px Breite runterskaliert wird? (1)
-
5.14 Wie lässt sich der
<f:form.textfield>
ViewHelper ergänzen, damit im HTML ein Attributdata-user="patrick"
ausgegeben wird? (1) - 5.15 Wie kann man einen String-Vergleich im If-ViewHelper durchführen? (2)
- 5.16 Wie ist es möglich, bei einer installierten Fremd-Extension lediglich eines der Templates individuell anzupassen, ohne die restlichen Templates kopieren zu müssen? (1)
- 5.17 Welche abstrakten ViewHelper gibt es per Default in Fluid? (2)
- 5.18 Welche Aussagen über Widgets sind wahr? (3)
- 5.19 Wie ist es möglich, ein eigenes Template für ein mitgeliefertes Widget zu verwenden? (1)
- 5.20 Was muss getan werden, damit der Link-ViewHelper beliebige GET-Parameter, die in der URL vorhanden sind, an den Link anhängt? (1)
-
5.21 Welche Bedeutung hat das Attribut
optional
in folgendem Code? (1) - 5.22 Wie verhindert man das Rendern des HTML-Tags in folgendem Partial? (1)
- 5.23 Wie kann man mehrere Variablen an den View übergeben? (3)
- 5.24 Welche Input-Werte kann der Paginate-ViewHelper verarbeiten? (3)
- 5.25 Was fehlt im folgenden Script an der Stelle der 5 Fragezeichen, damit das Template in jeder PHP Datei gerendert werden kann? (1)
-
6. TypoScript
-
6.1 Angenommen, der Extension-Key lautet
simpleblog
und der Plugin-KeyBloglisting
- welche TypoScript-Schlüssel gibt es? (3) -
6.2 Wie kann man im Controller auf den
value
aus folgendem TypoScript-Setting zugreifen:plugin.tx_simpleblog.settings.key = value
? (1) -
6.3 Wie kann man im TypoScript erreichen, dass ein Plugin (Extension:
Simpleblog
, Plugin:Bloglisting
) auf jeder Seite eingebunden wird? (1) - 6.4 Welche Möglichkeit gibt es, eine Extension mit TSconfig-Settings auszustatten? (1)
-
6.5 Was bewirkt der TypoScript-Unterschlüssel
features.skipDefaultArguments = 1
? (1) - 6.6 Wie kann erreicht werden, dass beim Aufruf einer nicht konfigurierten Action automatisch zur Default-Action gesprungen wird? (1)
- 6.7 Wie kann erreicht werden, dass beim Aufruf einer nicht konfigurierten Action eine “Page not found” Meldung (HTTP Code 404) ausgegeben wird? (1)
- 6.8 Was kann getan werden, damit eine Action nicht aufgerufen werden kann? (2)
- 6.9 Wie kann erreicht werden, das Datensätze eines Domänen-Objekt auf einer bestimmten PID abgelegt werden? (2)
- 6.10 Wie ist der offzielle Weg, um im Repository auf TypoScript-Settings zuzugreifen? (1)
- 6.11 Welche Aussagen über TypoScript für Backend-Module sind richtig? (2)
-
6.12 Ist es möglich,
stdWrap
in den Settings zu verwenden, um z.B. eine dynamische Berechnung von Werten zu ermöglichen? (1) - 6.13 Ist es möglich, eigene Conditions zur Verwendung in TypoScript zu implementieren? (1)
-
6.14 Wie kann die Eigenschaft
title
des Objektsblog
in der TypoScript-Bibliotheklib.path
weiterverwendet werden? (2) - 6.15 Können eigene cObjects zur Verwendung in TypoScript hinzugefügt werden? (1)
- 6.16 Wie ist es möglich, ein TypoScript-Objekt im Controller zu erhalten? (1)
- 6.17 Wie kann man mehrere Werte in einem Feld (z.B. innerhalb der Seiteneigenschaften) über TypoScript parsen und verarbeiten? (1)
- 6.18 Wie kann man ein Array als TypoScript-Objekt parsen lassen? (1)
-
6.1 Angenommen, der Extension-Key lautet
-
7. Security
- 7.1 Ist es möglich, in einer Action dynamisch (z.B. per JavaScript) Formularfelder im Frontend hinzuzufügen? (1)
- 7.2 Wie lauten die Abfragen, um einen Frontend-User zu identifizieren, der Mitglied der Gruppe “news” (UID = 5) ist? (2)
- 7.3 Du implementierst folgenden Code in einem Repository - was ist falsch daran? (1)
-
7.4 Wo liegt der Unterschied in der Verwendung von
{content}
im folgenden Script? (1) - 7.5 Wie kann zuverlässig die UID des eingeloggten Frontend-Users ermittelt werden? (1)
- 7.6 Du hast eine Sicherheitslücke in einer Extension entdeckt, die nicht zum Core gehört. Was tust Du als erstes? (1)
- 7.7 Was ist falsch an folgendem Code? (1)
- 7.8 Als verantwortungsbewusster Entwickler sollte man sich immer über Sicherheitslücken auf dem Laufenden halten - wie kann man das am besten machen? (1)
-
7.9 Was ist die Aufgabe der
FormProtectionFactory
? (1)
-
8. Errors & Validations
-
8.1 Wie kann man auf ein nicht-valides Domänenobjekt
$blog
in einer Actionnew
zugreifen? (2) -
8.2 Kann man auf Validierungsfehler des Objekts
$blog
im Controller zugreifen? (1) - 8.3 Welche Validation Annotations sind prinzipiell gültig? (3)
- 8.4 Von welcher Validator-Klasse leiten alle Default-Validatoren ab? (1)
-
8.5 Was (wenn überhaupt) wird benötigt, um Optionen in einem Validator zu verwenden - z.B.
Pluswerk.Simpleblog:Word(max=3)
? (1) -
8.6 Welche Auswirkung hat eine Methode
errorAction()
im Controller? (1) - 8.7 Ist es möglich, Objekte manuell zu validieren? (1)
-
8.1 Wie kann man auf ein nicht-valides Domänenobjekt
-
9. Caching
- 9.1 Wie ist es möglich, den Cache der aktuellen Seite nach einer Schreiboperation zu löschen, selbst wenn das Plugin gecacht ist? (1)
- 9.2 Extbase verwendet einen sogenannten “Reflection-Cache” - ist es möglich, diesen zu deaktivieren? (1)
- 9.3 Kann man alle Caches gemeinsam löschen? (1)
-
9.4 Was sind die Unterschiede zwischen den Methoden
get()
undgetCache()
im Cache-Manager? (2) - 9.5 Welche Caching-Gruppen existieren im Core? (1)
- 9.6 Wie lässt sich feststellen, ob es einen Cache-Eintrag für einen Identifier gibt? (2)
- 9.7 In welcher Datei werden (unter anderem) die Einstellungen des Caching-Frameworks per Default vorgenommen? (1)
- 9.8 Kann man das Caching-Framework global abschalten? (1)
-
9.9 Was muss gemacht werden, um einen eigenen Cache
simpleblog_cache
verwenden zu können? (1)
-
10. Repositories & Query-Manager
- 10.1 Welche Repository-Methode benötigt man, um zu überprüfen, ob in einem Domain-Model in einer Eigenschaft, die eine m:n Relation ist, ein bestimmter Wert vorhanden ist? (1)
- 10.2 Welche Repository-Methode benötigt man, um zu überprüfen, ob in einem Domain-Model der Wert einer Eigenschaft in einem von mehreren möglichen Werten vorkommt? (1)
- 10.3 Wie kann erreicht werden, dass alle Methoden eines Repositories das Ergebnis sortiert zurückgeben? (1)
-
10.4 Was muss anstelle der drei Fragezeichen notiert werden, damit der
fullname
absteigend sortiert wird (Datenbank MySQL)? (2) -
10.5 Es gibt zwei Domain Objekte
Artikel
undSeite
, die 1:n verknüpft sind. Wie kann ich alle Artikel finden, die auf einer Seite einen Suchstring beinhalten? (1) - 10.6 Wie kann man erreichen, dass das Repository Daten von der Seite mit der UID = 0 ermittelt? (2)
- 10.7 Welche Aussage über den Persistence-Manager ist richtig? (1)
-
10.8 Was fehlt in folgendem Script anstelle der Fragezeichen, damit das Datenbank-Feld
first_name
der Tabellefe_users
auf die PropertyfirstName
in dem Domain-ModelUser
gemappt wird? (1) -
10.9 Ein Domain-Model besitzt eine Relation mit dem Namen
parent
zu sich selbst. Ist es möglich, diese im Query-Manager abzufragen? (1)
-
11. Dokumentation
- 11.1 Wo befindet sich die Dokumentation für eine Extension? (1)
- 11.2 In welches Verzeichnis platziert man Bilder in einem TYPO3 Extension ReST Dokument? (1)
-
11.3 Was wird benötigt, um im TER (bzw. auf
docs.typo3.org
) eine Dokumentation für eine Extension anzuzeigen? (2) -
11.4 Welche Dateien können in einem
Documentation
-Verzeichnis existieren? (3)
-
12. Miscellaneous
- 12.1 Welche der Annotations hat in Extbase keine Auswirkung? (2)
-
12.2 Welche Formate für die Datei
ext_icon
werden zur Zeit nicht unterstützt? (2) - 12.3 Welche Fehler im Sinne der Coding-Guidelines enthält der folgende Code? (3)
- 12.4 Wie lässt sich folgender Code verkürzen? (1)
- 12.5 Ist es möglich, die folgende Annotation auszuwerten? (1)
- 12.6 Du befindest Dich in der Entwicklung einer Extension und jede neu hinzugefügte Klasse wird mit einer Fehlermeldung quittiert, die besagt, dass der Autoloader die Klasse nicht finden kann - warum? (1)
-
12.7 Wie sollte man am Besten das Debugging vom Objekt
$object
in Extbase durchführen? (1) - 12.8 Was macht der folgende Code, der so im Controller auftauchen könnte? (1)
- 12.9 Wie kommt man in Extbase an die Daten des aktuellen Content-Objekts? (1)
- 12.10 Wie erhält man verschiedene FlashMessageQueues zur selben Zeit? (1)
- 12.11 Wie kann man einen CommandController so einschränken, dass dieser zwar per Kommandozeile, aber nicht per Scheduler ausführbar ist? (1)
-
13. Anhang
- 13.1 Überblick über alle Fragen
- Anmerkungen
Die bedingungslose Leanpub Garantie: Kein Risiko, 100% Zufriedenheit
Innerhalb von 60 Tagen ab Kauf kannst du dein Geld zu 100% zurückverlangen, bei jedem Leanpub-Kauf, in nur zwei Klicks. Wir bearbeiten die Erstattungen manuell, daher dauert es ein paar Tage, bis der Betrag ankommt.
Lese die kompletten Bedingungen.
Verdienen Sie $8 bei einem Kauf von $10 und $16 bei einem Kauf von $20
Wir zahlen 80% Tantiemen bei Käufen von $7,99 oder mehr und 80% Tantiemen abzüglich einer Pauschalgebühr von 50 Cent bei Käufen zwischen $0,99 und $7,98. Sie verdienen $8 bei einem Verkauf von $10 und $16 bei einem Verkauf von $20. Wenn wir also 5000 nicht zurückgegebene Exemplare Ihres Buches für $20 verkaufen, verdienen Sie $80,000.
(Ja, einige Autoren haben auf Leanpub bereits viel mehr verdient.)
Tatsächlich haben Autoren durch das Schreiben, Veröffentlichen und Verkaufen auf Leanpubüber 13 Millionen Dollar verdient.
Erfahren Sie mehr über das Schreiben auf Leanpub
Kostenlose Updates. Ohne DRM.
Mit dem Kauf auf Leanpub bekommst Du kostenlose Updates solange der Autor Änderungen vornimmt! Viele Autoren veröffentlichen ihre Bücher während des Schreibens. Alle Leser bekommen dann kostenlose Updates, egal wann sie das Buch gekauft haben oder wie viel sie bezahlt haben (auch wenn es kostenlos war).
Die meisten Leanpub Bücher sind erhältlich als PDF (für Computer) oder EPUB (für Handy, Tablet, Kindle). Die verfügbaren Formate sind oben rechts auf dieser Seite angezeigt.
Leanpub Bücher kommen ohne DRM Kopierschutz Firlefanz, sodass Du sie problemlos auf jedem unterstützten Gerät lesen kannst.
Erfahren Sie mehr über Leanpubs E-Book-Formate und wo Sie sie lesen können