簡體   English   中英

Flexform 中的 TYPO3 FAL

[英]TYPO3 FAL in Flexform

我有一個帶有以下代碼的flexform:

<image>
    <TCEforms>
        <label>LLL:EXT:my_slider/Resources/Private/Language/locallang.xlf:flexform.slider.main.slider.image</label>
        <config>
            <type>group</type>
            <internal_type>file</internal_type>
            <allowed>jpg, jpeg, gif, png</allowed>
            <show_thumbs>1</show_thumbs>
            <minitems>0</minitems>
            <maxitems>1</maxitems>
            <size>1</size>
        </config>
    </TCEforms>
</image>

到現在為止,這行得通。 但現在在 TYPO3 10 中我收到此錯誤:

表 tt_content 中字段“image”的 TCA internal_type 必須設置為“db”或“folder”。

我該如何解決這個問題? 如何將我的 flexform 遷移到 FAL? 我已經測試了一些解決方案,但它們以:

字段名稱“pi_flexform”和節容器“sliderConfiguration”中元素“image”的無效彈性表單數據結構:不允許在彈性表單節中嵌套內聯元素。

如果我寫

<el>
    <settings.slider type="array">
    <title>LLL:EXT:my_slider/Resources/Private/Language/locallang.xlf:flexform.slider.main.slider</title>
    <type>array</type>
    <section>1</section>
    <el>
        <sliderConfiguration>
            <type>array</type>
            <title>LLL:EXT:my_slider/Resources/Private/Language/locallang.xlf:flexform.slider.main.slider.slide</title>
            <el>
                <media>
                    <!-- https://stackoverflow.com/questions/47554243/how-to-add-cropvariants-to-an-image-field-in-typo3-flexform -->
                    <TCEforms>
                        <label>
                            LLL:EXT:va_template/Resources/Private/Language/locallang.xlf:content_element.backgroundtext.settings.image
                        </label>
                        <config>
                            <type>inline</type>
                            <minitems>1</minitems>
                            <maxitems>1</maxitems>
                            <appearance type="array">
                                <enabledControls type="array">
                                    <delete>1</delete>
                                    <dragdrop>1</dragdrop>
                                    <new>0</new>
                                    <hide>1</hide>
                                    <info>1</info>
                                </enabledControls>
                                <fileUploadAllowed>1</fileUploadAllowed>
                                <headerThumbnail type="array">
                                    <field>uid_local</field>
                                    <height>100c</height>
                                    <width>100</width>
                                </headerThumbnail>
                                <useSortable>1</useSortable>
                            </appearance>
                            <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_sortby>sorting_foreign</foreign_sortby>
                            <foreign_table>sys_file_reference</foreign_table>
                            <foreign_table_field>tablenames</foreign_table_field>
                        </config>
                    </TCEforms>
                </media>

然后我得到這個錯誤

字段名稱“pi_flexform”和節容器“sliderConfiguration”中元素“media”的無效彈性表單數據結構:不允許在彈性表單節中嵌套內聯元素。

我在這里寫了完整的 flexform 配置,它將與 typo3 10 一起運行。

 <image> <TCEforms> <label>LLL:EXT:ns_theme_healthy/Resources/Private/Language/locallang_flex.xlf:general.image</label> <config> <type>inline</type> <maxitems>1</maxitems> <foreign_table>sys_file_reference</foreign_table> <foreign_table_field>tablenames</foreign_table_field> <foreign_label>uid_local</foreign_label> <foreign_sortby>sorting_foreign</foreign_sortby> <foreign_field>uid_foreign</foreign_field> <foreign_selector>uid_local</foreign_selector> <foreign_selector_fieldTcaOverride> <config> <appearance> <elementBrowserType>file</elementBrowserType> <elementBrowserAllowed>gif,jpg,jpeg,png,svg</elementBrowserAllowed> </appearance> </config> </foreign_selector_fieldTcaOverride> <foreign_types type="array"> <numIndex index="0"> <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem> </numIndex> <numIndex index="2"> <showitem>--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,--palette--;;filePalette</showitem> </numIndex> </foreign_types> <foreign_match_fields> <fieldname>image</fieldname> <:-- CAUTION:. Replace "fal" with the variable name of this field: --> </foreign_match_fields> <appearance type="array"> <newRecordLinkAddTitle>1</newRecordLinkAddTitle> <headerThumbnail> <field>uid_local</field> <height>64</height> <width>64</width> </headerThumbnail> <enabledControls> <info>1</info> <new>0</new> <dragdrop>0</dragdrop> <sort>1</sort> <hide>0</hide> <delete>1</delete> <localize>1</localize> </enabledControls> <createNewRelationLinkTitle>LLL.EXT,frontend/Resources/Private/Language/locallang_ttc,xlf,images,addFileReference</createNewRelationLinkTitle> </appearance> <behaviour> <localizationMode>select</localizationMode> <localizeChildrenAtParentLocalization>1</localizeChildrenAtParentLocalization> </behaviour> <overrideChildTca> <columns type="array"> <uid_local type="array"> <config type="array"> <appearance type="array"> <elementBrowserType>file</elementBrowserType> <elementBrowserAllowed>jpg;png:svg:jpeg.gif</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> </image>

我已經對我全新的 typo3 10 項目進行了測試。

我希望它對你有幫助。 謝謝!

max.haredoom 的解決方案有效:) 干得好,伙計。 奇怪的是它只在沒有“設置......”的情況下工作

如果您需要將其用於自定義內容元素,則可以將以下內容添加到您的處理器文件中:

    if (isset($processedData['content']['images']) &&
        (int) $processedData['content']['images'] > 0) {
        $fileRepository = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Resource\FileRepository::class);
        $fileObjects = $fileRepository->findByRelation('tt_content', 'image', $processedData['data']['uid']);
        // now loop over objects and get sys_file uids via $fileObject->getOriginalFile()->getUid();
    }

像在標准內容元素中那樣做呢?

在 TYPO3 后端 go 到模塊Configuration
和 select $GLOBALS['TCA'] (Table configuration array)
然后找到tt_content.columns.media.config的路徑

select 這些字段和值並將其作為 XML 插入到您的定義中

我找到了這個。 所選圖像保存在 tt_content 中。 但保存后它不會出現在后端表單中。

<options.image1>
    <TCEforms>
        <label>Bild</label>
        <config>
            <type>inline</type>
            <type>group</type>
            <internal_type>db</internal_type>
            <maxitems>1</maxitems>
            <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>
                    </appearance>
                </config>
            </foreign_selector_fieldTcaOverride>
            <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>
    </TCEforms>
</options.image1>

我找到了一個解決方案:請參閱此處: 如何在 TYPO3 10 中以自定義 extbase 擴展的 flexform 創建文件上傳字段?

或者為了您的方便:

<T3DataStructure>
<sheets>
    <sDEF>
        <ROOT>
            <TCEforms>
                <sheetTitle>Example 1</sheetTitle>
            </TCEforms>
            <type>array</type>
            <el>
                <!-- example of a working fal image -->
                <images>
                    <label>FAL-Images</label>
                    <config>
                        <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>image</fieldname>
                        </foreign_match_fields>
                        <foreign_label>uid_local</foreign_label>
                        <foreign_selector>uid_local</foreign_selector>
                        <overrideChildTca>
                            <columns>
                                <uid_local>
                                    <config>
                                        <appearance>
                                            <elementBrowserType>file</elementBrowserType>
                                            <elementBrowserAllowed></elementBrowserAllowed>
                                        </appearance>
                                    </config>
                                </uid_local>
                            </columns>
                        </overrideChildTca>
                        <filter>
                            <userFunc>TYPO3\CMS\Core\Resource\Filter\FileExtensionFilter->filterInlineChildren</userFunc>
                            <parameters>
                                <allowedFileExtensions></allowedFileExtensions>
                                <disallowedFileExtensions></disallowedFileExtensions>
                            </parameters>
                        </filter>
                        <appearance>
                            <useSortable>1</useSortable>
                            <headerThumbnail>
                                <field>uid_local</field>
                                <width>45</width>
                                <height>45c</height>
                            </headerThumbnail>
                            <enabledControls>
                                <info>1</info>
                                <new>0</new>
                                <dragdrop>1</dragdrop>
                                <sort>0</sort>
                                <hide>1</hide>
                                <delete>1</delete>
                            </enabledControls>
                        </appearance>
                    </config>
                </images>
                <!-- end -->
            </el>
        </ROOT>
    </sDEF>
</sheets>

如果您想編輯由 DCE 擴展創建的字段,在將 Typo3 9.x 更新到 Typo3 10.x 后,我遇到了類似的錯誤。

我過去的 dce 元素配置,這給了我錯誤是:

<config>
    <type>group</type>
    <internal_type>file</internal_type>
    <allowed>jpg,jpeg,png,gif</allowed>
    <size>1</size>
    <minitems>0</minitems>
    <maxitems>1</maxitems>
    <show_thumbs>1</show_thumbs>
</config>

將 <internal_type> 從文件更改為文件后,錯誤消失了,一切都很好了。 后端還告訴我選項“db”在某些情況下也可能會起作用。

<config>
    <type>group</type>
    <internal_type>folder</internal_type>
    <allowed>jpg,jpeg,png,gif</allowed>
    <size>1</size>
    <minitems>0</minitems>
    <maxitems>1</maxitems>
    <show_thumbs>1</show_thumbs>
</config>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM