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 Leanpub 60-Tage 100% Zufriedenheitsgarantie
Innerhalb von 60 Tagen nach dem Kauf können Sie mit nur zwei Klicks eine 100% Rückerstattung für jeden Leanpub-Kauf erhalten.
Technisch gesehen ist das ein Risiko für uns, da Sie die Buch- oder Kursdateien so oder so behalten. Aber wir sind so überzeugt von unseren Produkten und Dienstleistungen sowie von unseren Autoren und Lesern, dass wir gerne eine vollständige Geld-zurück-Garantie für alles anbieten, was wir verkaufen.
Sie können nur herausfinden, wie gut etwas ist, indem Sie es ausprobieren, und dank unserer 100% Geld-zurück-Garantie gehen Sie dabei buchstäblich kein Risiko ein!
Es gibt also keinen Grund, nicht auf den 'In den Warenkorb'-Button zu klicken, oder?
Vollständige Bedingungen ansehen...
Verdienen Sie 8$ bei einem Verkauf von 10$ und 16$ bei einem Verkauf von 20$
Wir zahlen 80% Tantiemen auf Käufe von 7,99$ oder mehr und 80% Tantiemen abzüglich einer Pauschale von 50 Cent auf Käufe 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ückerstattete Exemplare Ihres Buches für 20$ verkaufen, verdienen Sie 80.000$.
(Ja, einige Autoren haben auf Leanpub bereits viel mehr als das verdient.)
Tatsächlich haben Autoren bereitsüber 14 Millionen Dollar durch das Schreiben, Veröffentlichen und Verkaufen auf Leanpub verdient.
Erfahren Sie mehr über das Schreiben auf Leanpub
Kostenlose Updates. DRM-frei.
Wenn Sie ein Leanpub-Buch kaufen, erhalten Sie kostenlose Updates, solange der Autor das Buch aktualisiert! Viele Autoren nutzen Leanpub, um ihre Bücher während des Schreibprozesses zu veröffentlichen. Alle Leser erhalten kostenlose Updates, unabhängig davon, wann sie das Buch gekauft oder wie viel sie bezahlt haben (einschließlich kostenloser Bücher).
Die meisten Leanpub-Bücher sind als PDF (für Computer) und EPUB (für Smartphones, Tablets und Kindle) verfügbar. Die verfügbaren Formate eines Buches werden in der oberen rechten Ecke dieser Seite angezeigt.
Schließlich haben Leanpub-Bücher keinen DRM-Kopierschutz-Unsinn, sodass Sie sie problemlos auf allen unterstützten Geräten lesen können.
Erfahren Sie mehr über Leanpubs E-Book-Formate und wo Sie sie lesen können