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, Kein Risiko, 100% zufrieden Garantie
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.
Do Well. Do Good.
Authors have earned$11,712,765writing, publishing and selling on Leanpub, earning 80% royalties while saving up to 25 million pounds of CO2 and up to 46,000 trees.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers), EPUB (for phones and tablets) and MOBI (for Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them
Top Books
Recipes for Decoupling
Matthias NobackWrite software that survives
OpenIntro Statistics
David Diez, Christopher Barr, Mine Cetinkaya-Rundel, and OpenIntroA complete foundation for Statistics, also serving as a foundation for Data Science.
Leanpub revenue supports OpenIntro (US-based nonprofit) so we can provide free desk copies to teachers interested in using OpenIntro Statistics in the classroom and expand the project to support free textbooks in other subjects.
More resources: openintro.org.
CQRS by Example
Carlos Buenosvinos, Christian Soronellas, and Keyvan Akbary- Leverage your Software Architecture skills by learning everything about CQRS in detail with lots of examples
- Develop faster applications by applying CQRS and fostering Read Models and Projections
- Learn how to apply CQRS into a brownfield project from a pragmatic approach
Maîtriser Apache JMeter
Philippe Mouawad, Bruno Demion (Milamber), and Antonio Gomes RodriguesToute la puissance d'Apache JMeter expliquée par ses commiteurs et utilisateurs experts. De l'intégration continue en passant par le Cloud, vous découvrirez comment intégrer JMeter à vos processus "Agile" et Devops.
If you're looking for the newer english version of this book, go to Master JMeter : From load testing to DevOps
Ansible for DevOps
Jeff GeerlingAnsible is a simple, but powerful, server and configuration management tool. Learn to use Ansible effectively, whether you manage one server—or thousands.
C++20 - The Complete Guide
Nicolai M. JosuttisAll new language and library features of C++20 (for those who know previous C++ versions).
The book presents all new language and library features of C++20. Learn how this impacts day-to-day programming, to benefit in practice, to combine new features, and to avoid all new traps.
Buy early, pay less, free updates.
Other books:
Jetpack Compose internals
Jorge CastilloJetpack Compose is the future of Android UI. Master how it works internally and become a more efficient developer with it. You'll also find it valuable if you are not an Android dev. This book provides all the details to understand how the Compose compiler & runtime work, and how to create a client library using them.
The PowerShell Scripting and Toolmaking Book
Don Jones and Jeff HicksLearn the patterns, practices, and details of PowerShell Scripting and Toolmaking from the industry's two most recognized experts on the subject.
The C4 model for visualising software architecture
Simon BrownA guide to visualising your software architecture with the C4 model.
Mastering STM32 - Second Edition
Carmine NovielloWith more than 1200 microcontrollers, STM32 is probably the most complete ARM Cortex-M platform on the market. This book aims to be the most complete guide around introducing the reader to this exciting MCU portfolio from ST Microelectronics and its official CubeHAL and STM32CubeIDE development environment.
Top Bundles
- #1
Software Architecture
2 Books
"Software Architecture for Developers" is a practical and pragmatic guide to modern, lightweight software architecture, specifically aimed at developers. You'll learn:The essence of software architecture.Why the software architecture role should include coding, coaching and collaboration.The things that you really need to think about before... - #2
CCIE Service Provider Ultimate Study Bundle
2 Books
Piotr Jablonski, Lukasz Bromirski, and Nick Russo have joined forces to deliver the only CCIE Service Provider training resource you'll ever need. This bundle contains a detailed and challenging collection of workbook labs, plus an extensively detailed technical reference guide. All of us have earned the CCIE Service Provider certification... - #4
Pattern-Oriented Memory Forensics and Malware Detection
2 Books
This training bundle for security engineers and researchers, malware and memory forensics analysts includes two accelerated training courses for Windows memory dump analysis using WinDbg. It is also useful for technical support and escalation engineers who analyze memory dumps from complex software environments and need to check for possible... - #6
All the Books of The Medical Futurist
6 Books
We put together the most popular books from The Medical Futurist to provide a clear picture about the major trends shaping the future of medicine and healthcare. Digital health technologies, artificial intelligence, the future of 20 medical specialties, big pharma, data privacy, digital health investments and how technology giants such as Amazon... - #8
The Python Craftsman
3 Books
The Python Craftsman series comprises The Python Apprentice, The Python Journeyman, and The Python Master. The first book is primarily suitable for programmers with some experience of programming in another language. If you don't have any experience with programming this book may be a bit daunting. You'll be learning not just a programming...