Изображение во флексформе

12.10.2016 | Разработка | автор: Dmitry Vasiliev dmitry at typo3.ru.net

В стандартной флексформе расширения, FAL поле для добавления файлы вызывает 500-ю ошибку. Эта ошибка возникает в 7-й ветке TYPO3.

Например часть флексформы, с FAL, выглядит так:

И при загрузке файла возникает вот такая ошибка.






<settings.media>
    <TCEforms>
        <label>Image</label>
        <config>
            <type>inline</type>
            <minitems>0</minitems>
            <maxitems>1</maxitems>
            <appearance type="array">
                <createNewRelationLinkTitle>LLL:EXT:cms/locallang_ttc.xlf:media.addFileReference</createNewRelationLinkTitle>
                <enabledControls type="array">
                    <delete>1</delete>
                    <dragdrop>1</dragdrop>
                    <hide>1</hide>
                    <info>1</info>
                    <localize>1</localize>
                </enabledControls>
                <headerThumbnail type="array">
                    <field>uid_local</field>
                    <height>45c</height>
                    <width>45</width>
                </headerThumbnail>
                <useSortable>1</useSortable>
                <showAllLocalizationLink>0</showAllLocalizationLink>
                <showPossibleLocalizationRecords>0</showPossibleLocalizationRecords>
                <showRemovedLocalizationRecords>0</showRemovedLocalizationRecords>
                <showSynchronizationLink>0</showSynchronizationLink>
            </appearance>
            <behaviour type="array">
                <localizationMode>select</localizationMode>
                <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization>
            </behaviour>
            <foreign_field>uid_foreign</foreign_field>
            <foreign_label>uid_local</foreign_label>
            <foreign_match_fields type="array">
                <fieldname>media</fieldname>
            </foreign_match_fields>
            <foreign_selector>uid_local</foreign_selector>
            <foreign_selector_fieldTcaOverride type="array">
                <config type="array">
                    <appearance type="array">
                        <elementBrowserAllowed></elementBrowserAllowed>
                        <elementBrowserType>file</elementBrowserType>
                    </appearance>
                </config>
            </foreign_selector_fieldTcaOverride>
            <foreign_sortby>sorting_foreign</foreign_sortby>
            <foreign_table>sys_file_reference</foreign_table>
            <foreign_table_field>tablenames</foreign_table_field>
        </config>
    </TCEforms>
</settings.media>

В журнале видим следующую ошибку

Core: Exception handler (WEB): Uncaught TYPO3 Exception: #1446996319: Configuration retrieved from FlexForm is incomplete or not of type "inline". 

Само собой в ядро лезть неправильно. Поэтому нужно сделать корректировку в своем расширении. В файл ext_localconf.php добавляем следующий код:

if ((float)TYPO3_version >= 7.0) { // bugfix for inline fal images in flexforms (only after record with flexform has been saved)
$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['formDataGroup']['inlineParentRecord']
[\TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseEditRow::class] = array();

$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['formDataGroup']['inlineParentRecord']
[\TYPO3\CMS\Backend\Form\FormDataProvider\InitializeProcessedTca::class] = array(

'depends' => array(
\TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseEditRow::class,
    )
  );
}

После этого всё нормально работает. 

Решение было найдено здесь https://forge.typo3.org/issues/71564

comments powered by HyperComments