Mit extbase-Extension und (TYPO3 6.1) sieht das Ganze etwas anders aus:
'ext_tables.php':
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
$_EXTKEY,
'pikey',
'PlugIn Name'
);
$extensionName = strtolower(\TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($_EXTKEY));
$pluginName = strtolower('pikey');
$pluginSignature = $extensionName.'_'.$pluginName;
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist'][$pluginSignature] = 'layout,select_key,pages';
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
$pluginSignature, 'FILE:EXT:'.$_EXTKEY . '/Configuration/FlexForms/PluginName.xml');
oder besser noch in 'Resources/TCA/Overrides/tt_content.php':
$extensionName = strtolower(\TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase('my_extension'));
$pluginName = strtolower('PluginName');
$pluginSignature = $extensionName.'_'.$pluginName;
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist'][$pluginSignature] = 'layout,select_key,pages';
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
$pluginSignature, 'FILE:EXT:' . 'my_extension' . '/Configuration/FlexForms/PluginName.xml');
Dementsprechend muss eine Datei '/Configuration/FlexForms/PluginName.xml' angelegt werden, die in der einfachen Form etwa so aussieht:
<T3DataStructure>
<meta type="array">
<langChildren>0</langChildren>
<langDisable>1</langDisable>
</meta>
<ROOT>
<type>array</type>
<el>
<settings.feld1>
<TCEforms>
<exclude>1</exclude>
<label>LLL:EXT:[$_EXTKEY]/Resources/Private/Language/locallang.xlf:label_feld1</label>
<config>
<type>input</type>
</config>
</TCEforms>
</settings.feld1>
<settings.feld2>
<TCEforms>
<exclude>1</exclude>
<label>LLL:EXT:[$_EXTKEY]/Resources/Private/Language/locallang.xlf:label_feld2</label>
<config>
<type>input</type>
</config>
</TCEforms>
</settings.feld2>
</el>
</ROOT>
</T3DataStructure>
Die Sprachdateien haben auch ihr zugewiesenes Verzeichnis und sind jetzt XLF statt XML:
<trans-unit id="label_settings_feld1">
<source>Flexform-Feld 1</source>
</trans-unit>
<trans-unit id="label_settings_feld2">
<source>Flexform-Feld 2</source>
</trans-unit>
Die Datentypen der Felder (im Tag <config> definiert) entsprechen der TCA-Definition, nur eben in XML-Notation.
Im Controller kann man direkt auf die FlexForm-Inhalte zuzugreifen:
$this->settings['feld1']
$this->settings['feld2']
Hier noch die neuen Datei-Referenzen mittels FAL (nach Referenz):
<maxitems>1</maxitems>
<type>inline</type>
<foreign_table>sys_file_reference</foreign_table>
<foreign_field>uid_foreign</foreign_field>
<foreign_sortby>sorting_foreign</foreign_sortby>
<foreign_table_field>tablenames</foreign_table_field>
<foreign_match_fields>
<fieldname>--feldname--</fieldname>
</foreign_match_fields>
<foreign_label>uid_local</foreign_label>
<foreign_selector>uid_local</foreign_selector>
<foreign_selector_fieldTcaOverride>
<config>
<appearance>
<elementBrowserType>file</elementBrowserType>
<elementBrowserAllowed>gif,jpg,jpeg,tif,tiff,bmp,pcx,tga,png,pdf,ai</elementBrowserAllowed>
<!-- $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] -->
</appearance>
</config>
</foreign_selector_fieldTcaOverride>
<filter>
<0>
<userFunc>TYPO3\CMS\Core\Resource\Filter\FileExtensionFilter->filterInlineChildren</userFunc>
<parameters>
<allowedFileExtensions>$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']</allowedFileExtensions>
<disallowedFileExtensions></disallowedFileExtensions>
</parameters>
</0>
</filter>
<appearance>(...)</appearance>
<type>group</type>
<internal_type>db</internal_type>
<appearance>
<elementBrowserType>file</elementBrowserType>
<elementBrowserAllowed>jpg,jpeg,png,gif</elementBrowserAllowed>
</appearance>
<allowed>sys_file</allowed>
<size>5</size>
<minitems>0</minitems>
<maxitems>5</maxitems>
<show_thumbs>1</show_thumbs>
'config' => array(
'maxitems' => 1,
'type' => 'inline',
'foreign_table' => 'sys_file_reference',
'foreign_field' => 'uid_foreign',
'foreign_sortby' => 'sorting_foreign',
'foreign_table_field' => 'tablenames',
'foreign_match_fields' => array( 'fieldname' => '--fieldname--' ),
'foreign_label' => 'uid_local',
'foreign_selector' => 'uid_local',
'foreign_selector_fieldTcaOverride' => array(
'config' => array(
'appearance' => array(
'elementBrowserType' => 'file',
'elementBrowserAllowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
)
)
),
'filter' => array(
array(
'userFunc' => 'TYPO3\\CMS\\Core\\Resource\\Filter\\FileExtensionFilter->filterInlineChildren',
'parameters' => array(
'allowedFileExtensions' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
'disallowedFileExtensions' => ''
)
)
),
'appearance' => array(...),
:
);