Extbase Extension für 8.7

Ich eine Referenz-Extension für ExtBase 8.7 erstellt:

https://github.com/aschmutt/extbase_87

Die folgenden Neuerungen sind darin umgesetzt:

  • alles was nicht mehr in ext_tables.php gehört in Configuration/TCA/Overrides verschoben. Gute Beispiele dafür findet man auch in EXT:news
  • $_EXTKEY  entfernt
  • Doctrine Beispiel in der Repository Klasse

Den Extension Builder gabs zu dem Zeitpunkt noch nicht, mittlerweile ist der verfügbar unter:

https://github.com/FriendsOfTYPO3/extension_builder

Es lohnt sich auch in ext_scaffold von Helmut Hummel zu schauen, da wird vieles erklärt:

https://github.com/helhum/ext_scaffold

Could not load partial file Menu/Type-15

Diese Fehlermeldung erscheint, wenn man sich in TYPO3 7.6 eine Sitemap anzeigen lassen will:

Could not load partial file. Tried following paths: (…) typo3/sysext/fluid_styled_content/Resources
/Private/Partials/Menu/Type-15″

Ursache ist, dass in der fluid_styled_content Extension eine Template Datei fehlt. Da man den Core nicht verändern sollte, gibt es folgende Lösung: Weiterlesen

Migrate textmedia Fehler beim TYPO3 Update

Beim Update auf 7.6 oder 8.7 kann es sein, dass diese Update Funktion einen Fehler hat:

Migrate CTypes text, image and textpic to textmedia and move file relations from „image“ to „asset_references“

Update failed!

SQL-ERROR: Column 'assets' cannot be null

Auch bei Update auf 8.7 kann dieser Fehler auftreten:

SQL-ERROR: Data truncated for column 'media' at row 6

Ursache sind Konvertierungs-Fehler von Text nach Integer, die Werte NULL oder „“ werden nicht richtig konvertiert. Es kann auch von der FAL Konvertierung noch der Filename als String in dem Feld stehen.
Mit diesem SQL Befehl kann man sich erst mal alle Einträge anzeigen lassen: Weiterlesen

Extension Settings abfragen

Wenn man die TypoScript Settings einer Extension abfragen will, kann man normalerweise folgenden Aufruf verwenden:

Typoscript: 
  plugin.tx_myextension_pi1 {
    settings {
      something = 123456
    }
  }
PHP: 
  $var = $this->settings['something'];

Allerdings benötigt man dafür den Extbase Controller Kontext. Es gibt aber immer wieder Situationen, bei denen dieser nicht verfügbar ist: Weiterlesen

mysql_real_escape_string mit PHP7

Die Funktion mysql_real_escape_string ist in PHP7 nicht mehr vorhanden. Man kann sie folgendermaßen ersetzen:

mysqli_real_escape_string($GLOBALS['TYPO3_DB']->getDatabaseHandle(),$string);

Wenn man mit Search-Replace über den gesamten Code geht, folgendes eingeben:

Search: mysql_real_escape_string(
Replace: mysqli_real_escape_string($GLOBALS['TYPO3_DB']->getDatabaseHandle(),