TYPO3 Extbase Validierung I – Validierung von Frontend Formularen

Jeder der bereits Erfahrung mit der TYPO3 Extbase Validierung gesammelt hat wird wissen, dass die Validierung gerade für Beginner nicht einfach ist zu implementieren. Aus diesem Grund widmet sich der folgende Artikel diesem Thema.

Was wird im Folgenden näher erläutert:

  • Funktionsweise der TYPO3 Extbase Validierung
  • Workflow der Extbase Validierung
    • Extbase Validierung mittels Annotationen im Domain Model
    • Extbase Validierung in der initialize[Name] Action()
  • Vordefinierte Extbase Validatoren
  • Ausgabe der Validierungs-Fehler über Fluid

Tipp der Authorin zu Beginn: Mir hat es enorm geholfen den Cache über den „Clear all chache“ Button im Install Tool zu löschen, wenn Änderungen nicht erschienen sind.

Einführung in die Welt der TYPO3 Hooks

Der heutige Blogbeitrag widmet sich dem Thema Hooks und deren Verwendung in TYPO3. Manche werden sich nun bestimmt denken, was kann an Hooks so schwer zu verstehen sein? Nun, im Prinzip ist das Konzept das sich hinter dem Begriff Hook verbirgt ein leichtes Konzept. Aber nichtsdestotrotz sind es gerade die simplen Dinge im Leben, die die meiste Zeit in Anspruch nehmen. Aus diesem Grund wird im Folgenden näher auf die Verwendung von Hooks in TYPO3 eingegangen.

TYPO3 CMS 7+ Login Provider API und ’sorting‘

Mit der neuen Login Provider API von TYPO3 7+ ist es relativ einfach ein neues Backend Login Service (z.B. SSO) einzuführen.

Der Login Provider wird über ext_localconf.php registriert:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['backend']['loginProviders'][] = array(
   'provider' => \Plan2net\ExampleAuth\LoginProvider\ExampleLoginProvider::class,
   'sorting' => 200,
   'icon-class' => 'fa-example',
   'label' => 'LLL:EXT:example_auth/…/locallang.xlf:login.link'
);

und hier kommt der Fallstrick auf den ich aufmerksam machen möchte:

sorting bezieht sich nicht auf die Sortierung, die ja allgemein bei 0 beginnen würde (als erster Eintrag), sondern ist eine Priorität. Es zählt hier also der höchste Wert, dann der zweithöchste, usw. Will man seinen eigenen Login Provider als Standard eingetragen haben (statt dem üblichen Benutzername und Passwort), setzt man sorting auf einen hohen Wert wie oben im Beispiel.

Benutzerfreundlicher Umgang mit „broken links“

Durch das lebendige Ändern von Websites ändern sich auch die Adressen einzelner Seiten (URLs) laufend. Dies kann dazu führen, dass gespeicherte Adressen (von Suchmaschinen, Verlinkungen oder Bookmarks) nicht mehr erreichbar sind. Tipps für einen professionellen Umgang damit – und wie Sie Besucher und Suchmaschinen freundlich behandeln sowie den TYPO3 Linkvalidator sinnvoll einsetzen:

1) Technik: Sorge für richtige http Statuscodes

Die grundlegende Aufgabe für die technische Konfiguration Ihres CMS oder Webservers: bei Aufruf unbekannter URLs muss der richtige http Stautscode (in diesem Fall „404 – Not Found“) zurückgegeben werden.

404xstandard

Wir waren auf den T3DD16!

Vergangene Woche fanden die TYPO3 Developer Days – kurz T3DD16 – in Nürnberg statt und mein Kollege Martin Kutschker und ich waren live dabei! Die Veranstaltung war über vier Tage angesetzt und wir waren vom Anfang bis zum Ende dabei. Es gab Vorträge, Hands-on Workshops und Diskussionen zu spannenden Themen wie Polymer, Docker und Temporal Modelling.

T3DD16 – plan2net sponsert die Coding Night

T3DD16 - TYPO3 Developer Days 2016
TYPO3 Developer Days 2016

Von 1.-4. September 2016 finden aktuell in Nürnberg (Deutschland) die als „T3DD“ bekannten TYPO3 Developer Days statt.

Es ist die grösste technische Veranstaltung der TYPO3 Community, die alle Aspekte des TYPO3 CMS behandelt: in intensiven Tutorials, Workshops und Sessions tauschen sich hier Developer über neue Entwicklungen aus, werden spannende Produktfeatures und Extension vorgestellt und Lösungsansätze diskutiert. Unter den mehr als 260 Teilnehmern befinden sich heuer auch wieder zwei plan2net ProgrammiererInnen.

Als Highlight gilt seit Jahren die sogenannte „Coding Night“, in der Entwickler aus allen Ländern gemeinsam am Produkt weiterarbeiten. plan2net freut sich sehr, diese heuer mitsponsern zu dürfen.

TYPO3 ViewHelper Tipps

Heute möchte ich euch zwei Tipps zeigen, welche die Geschwindigkeit von TYPO3 ViewHelpers deutlich beeinflussen können.


Tipp1: Caching

Aufpassen muss man bei ViewHelpers die Facets\ChildNodeAccessInterface statt Facets\CompilableInterface nutzen, da sie nicht gecacht werden und sich das Parsen der Seite um Sekunden verzögern kann. Folgende ViewHelper werden nicht gecacht:

  • <f:switch> → stattdessen f:if nutzen, das ist deutlich schneller (TYPO3 Version 6.2)
  • <f:widget.paginate>
  • <f:widget.autocomplete>
  • <f:be.menus.actionMenu>

Diese ViewHelpers also bitte mit Maß und Ziel verwenden ;-)

 

Tipp2: Partials

MailHog – Einrichten eines lokalen Mailservers

Bei manchen Projekten ist es unvermeidbar einen lokalen Mailserver einzurichten, um gewissen Funktionalitäten zu prüfen bzw. zu entwickeln. Oftmals ist es jedoch gerade für Anfänger eine Herausforderung solch alltäglich gebräuchliche Tools zu verwenden bzw. einzurichten. Aus diesem Grund widmet  sich dieser Artikel dem Installieren eines lokalen Mailservers (MailHog) auf einem Linux Server, sowie dessen Konfiguration in einer TYPO3 7.6 Instanz.

Zu Beginn ist das richtige MailHog Packet (v0.2.1 hier) von https://github.com/mailhog/MailHog/ releases zu downloaden. Ein guter Workaround hierfür ist:

1) Link der richtigen Version kopieren
2) In der Command Line via wget im Root Verzeichnis der lokalen Instanz herunterladen

Kleines Shell Script zum Auffinden von Bildern mit gewisser Größe

Voraussetzungen:

  • Bash
  • find, awk
  • identify von ImageMagick oder GraphicsMagick
#!/bin/bash

MIN_WIDTH=240
MIN_HEIGHT=200

# internal field separator, https://bash.cyberciti.biz/guide/$IFS
# changed to make file names with spaces work
OIFS="$IFS"
IFS=$'\n'
# find all files with type image
for image in `find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}'`; do
# get image dimensions (width/height), ignore errors
       width_and_height=`identify -format '%w %h' "$image" 2>/dev/null`
       if test -n "$width_and_height"; then
               width=`echo "$width_and_height" | awk '{print $1}'`
               height=`echo "$width_and_height" | awk '{print $2}'`

               if [ "$width" -lt $MIN_WIDTH ] || [ "$height" -lt $MIN_HEIGHT ]; then
                       echo "wrong dimensions: $image $width x $height"
               fi
       else
               echo "unable to get image dimensions for $image"
       fi
done
IFS="$OIFS"

TCA-Konfiguration und der TYPO3-Cache

Wie man als TYPO3-Extension-Entwickler die Performanz eines Seitenaufrufs ganz leicht verbessern kann.

Seit der Version 6 LTS kann man in einer Extension verschiedene Konfigurationen des $TCA-Arrays, die traditionell in ext_tables.php abgelegt wurden, auslagern. Das sind zum einen Definitionen und Erweiterungen von SQL-Tabellen als auch Konfigurationen von Plugins.

Configuration/TCA/<tabelle>.php

TYPO3 erwartet in diesem Ordner Dateien mit PHP-Code, die ein komplettes $TCA-Array einer Tabelle mittels return zurückliefern. Der Dateiname ist hierbei der Name gleich wie jener der zu definierenden Tabelle.

Configuration/TCA/Overrides/<tabelle>.php

PHP-Dateien im Overrides-Ordner können verschiedene Manipulationen am $TCA-Array vornehmen. Der Name der Dateien ist für TYPO3 nicht von Bedeutung, allerdings ist es sinnvoll auch hier den Namen der Tabellen als Dateiname zu verwenden.

Anfrage