Snippets für den Umstieg LTS 9 auf LTS 10
Annotation: @validate / @ignoreValidation
Mit LTS 10 hat sich die Syntax für @ignoreValidation im Controller bzw. @validate in einem Modell geändert.
SIehe auch die aktuelle Doku
Im Controller:
* @ignorevalidation $newSpiel
nun anstatt eines Variablen Namens, den Namen des zu ignorierenden Objects als String
* @TYPO3\CMS\Extbase\Annotation\IgnoreValidation("newSpiel")
Beispiel:
/**
* action new
*
* @param Spiel $newSpiel
* @TYPO3\CMS\Extbase\Annotation\IgnoreValidation("newSpiel")
* @return void
*/
public function newAction(Spiel $newSpiel = NULL) {
Und um in der dazugehörenden Create Action
* @validate $newSpiel \JVE\JvBrettspiele\Validation\Validator\NewSpielValidator
nun im Head der Klasse und
use TYPO3\CMS\Extbase\Annotation as Extbase;
* @Extbase\Validate(param="newSpiel", validator="JVE\JvBrettspiel\Domain\Validator\NewSpielValidator")
Beispiel:
/**
* action create
*
* @param Spiel $newSpiel
* @Extbase\Validate(param="newSpiel" , validator="JVE\JvBrettspiel\Domain\Validator\NewSpielValidator")
* @return void
*/
public function createAction(Spiel $newSpiel = NULL) {
Im dazu passenden Datenmodel, z.b. den Namen auf "Nicht Leer" zu überprüfen nun anstatt, wie vom Extension Builder "annodazumal" erzeugt:
* @validate "NotEmpty"
nun
* @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
Beispiel:
/**
* name
*
* @var \string
* @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
*/
protected $name;
FAL - Image: Use IRRE relations in own flexform content element
Nach dem Umstieg von LTS 9 auf LTS 10 , fehlte mir die Möglichkeit, in meinem "selbstgebauten" Content element Image Slider im backend neue BIlder hinzuzufügen.
Im Config Abschnitt fehlten mit einige Punkte
<settings.images type="array">
<TCEforms type="array">
<exclude>1</exclude>
<label>LLL:EXT:jve_template/Resources/Private/Language/locallang_db.xlf:flexform.slider.sheet.images.title</label>
<config>
<type>inline</type>
<maxitems>99</maxitems>
<foreign_table>sys_file_reference</foreign_table>
<!--<foreign_field>uid_foreign</foreign_field>-->
<foreign_table_field>tablenames</foreign_table_field>
<foreign_label>uid_local</foreign_label>
<foreign_sortby>sorting_foreign</foreign_sortby>
<foreign_selector>uid_local</foreign_selector>
<foreign_selector_fieldTcaOverride type="array">
<config>
<appearance>
<elementBrowserType>file</elementBrowserType>
<elementBrowserAllowed>jpg,png,jpeg</elementBrowserAllowed>
</appearance>
</config>
</foreign_selector_fieldTcaOverride>
<foreign_types type="array">
<numIndex index="2" type="array">
<showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
</numIndex>
</foreign_types>
<foreign_match_fields type="array">
<fieldname>image</fieldname>
</foreign_match_fields>
<appearance type="array">
<newRecordLinkAddTitle>1</newRecordLinkAddTitle>
<useSortable>1</useSortable>
<headerThumbnail>
<field>uid_local</field>
<height>64</height>
<width>64</width>
</headerThumbnail>
<enabledControls>
<info>1</info>
<new>1</new>
<dragdrop>1</dragdrop>
<sort>1</sort>
<hide>1</hide>
<delete>1</delete>
<localize>0</localize>
</enabledControls>
<createNewRelationLinkTitle>LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference</createNewRelationLinkTitle>
</appearance>
<overrideChildTca>
<columns type="array">
<uid_local type="array">
<config type="array">
<appearance type="array">
<elementBrowserType>file</elementBrowserType>
<elementBrowserAllowed>jpg,png,jpeg</elementBrowserAllowed>
</appearance>
</config>
</uid_local>
</columns>
<types type="array">
<numIndex index="2">
<showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem>
</numIndex>
</types>
</overrideChildTca>
</config>
</TCEforms>
</settings.images>
TYPOSCRIPT Import syntax hat sich geändert
Auch wenn das kein "Breaking Change" war, da derzeit die alte Variante noch funktioniert, aber da bei mir der Import im Packend als Page TS in dem alten Format ohenhin nicht geklappt, hat, hab ich das geändert von:
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:jve_template....">
zu:
@import "/typo3conf/ext/jve_template/Configuration/TypoScript/www.jve.com/TSConfig/Rte/RTE-ckeditor.typoscript"
Extension Scanner nutzen
Im Backend nach kann man unter Update den Extension Scanner nutzen um eigene Extensions an die LTS 10 anzupassen
Führt das zu "Fehlalarmen" kann man die so unterdrücken:
// @extensionScannerIgnoreLine
$foo->someFalsePositiveMatch('foo');
oder eine ganze PHP Klasse, z.b. wenn man z.b. für eine ältere TYPO3 Version noch seine eigene Kompatibilitätsklasse erstellt hat, die z.b. die Sys_language_uid zurück liefert.
<?php
/**
* @extensionScannerIgnoreFile
*/
class CompatiblityOldVersions {
static function getSysLanguage() {
....
}
}
TYPO3_Branch
Die Constanten TYPO3_Branch und TYPO3_Version werden in LTS 11 wegfallen. Am besten gleich in der LTS 10 umbauen zu :
also statt:
if(intval(TYPO3_branch) < 9) {
nun:
/** @var Typo3Version $tt */
$tt = GeneralUtility::makeInstance( \TYPO3\CMS\Core\Information\Typo3Version::class ) ;
if( $tt->getMajorVersion() < 9 ) {