TYPO3 CMS Certified Developer (Deutsch)

Nicht mehr verfügbar

Dieses Buch ist nicht mehr erhältlich.

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.

  • Teile dieses Buch

  • Kategorien

    • PHP
    • Software Engineering
    • Software Architecture
  • Rückmeldung

Über den Autor

Michael Schams
Michael Schams

Michael Schams is a well-known, long-term member of the TYPO3 community with many years of professional experience. He holds a master's degree in computer sciences, is an international advocate of open-source software, and a regular writer for technical journals and online media.

Currently based in Melbourne (Australia), Michael consults with clients across the globe to achieve best outcomes in the digital space. He is also a member of the TYPO3 Education Committee and an AWS certified Cloud Practitioner and an AWS certified Solutions Architect.

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 Datei ext_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üssel state? (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() und forward() 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-Model Blog. 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 Datei ext_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 Spalte shortdescr 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 das object Attribut des Form-ViewHelper blog lautet, die Extension Simpleblog und das Plugin Bloglisting 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 Attribut data-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-Key Bloglisting - 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 Objekts blog in der TypoScript-Bibliothek lib.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)
  • 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 Action new 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)
  • 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() und getCache() 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 und Seite, 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 Tabelle fe_users auf die Property firstName in dem Domain-Model User 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

Schreiben und veröffentlichen auf Leanpub

Autoren und Verleger nutzen Leanpub, um erstaunliche Fortschrittsbücher zu veröffentlichen und E-Books zu vervollständigen. Sie können auch auf Leanpub schreiben, veröffentlichen und verkaufen! Leanpub ist eine leistungsstarke Plattform für ernsthafte Autoren und kombiniert einen einfachen, eleganten Schreib- und Publishing-Workflow mit einem Store, der sich auf den Verkauf von E-Books konzentriert. Leanpub ist eine magische Schreibmaschine für Autoren: Schreiben Sie einfach in Klartext, und um Ihr E-Book zu veröffentlichen, klicken Sie einfach auf eine Schaltfläche. Es ist wirklich so einfach.

Erfahren Sie mehr über das Schreiben auf Leanpub