Как добавить варианты кадрирования в поле изображения в TYPO3 flexform

Я могу переопределить параметр cropVaraints для поля изображения в TCA следующим образом:

'columnsOverrides' => [
    'image' => [
        'label' => 'LLL:EXT:myext/Resources/Private/Language/locallang_be.xlf:general.field.image',
        'config' => [
            'overrideChildTca' => [
                'columns' => [
                    'crop' => [
                        'config' => [
                            'cropVariants' => [
                                'default' => [
                                    'title' => 'LLL:EXT:myext/Resources/Private/Language/locallang_be.xlf:wizard.banner.title',
                                    'allowedAspectRatios' => [
                                        '2:1' => [
                                            'title' => 'LLL:EXT:myext/Resources/Private/Language/locallang_be.xlf:field.banner.image-crop.ratio',
                                            'value' => 2 / 1
                                        ],
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],
],

Я попытался приспособить это к flexform, но безуспешно. Так что мне нужно что-то вроде этого (но работает :-))

<foreign_selector_fieldTcaOverride type="array">
    <config>
        <appearance>
            <elementBrowserType>file</elementBrowserType>
            <elementBrowserAllowed>jpg,png</elementBrowserAllowed>
        </appearance>
        <overrideChildTca>
            <columns>
                <crop>
                    <config>
                        <cropVariants>
                            <default>
                                <title>Blubber</title>
                                <allowedAspectRatios>
                                    <test>
                                        <title>2:1</title>
                                        <value>2 / 1</value>
                                    </test>
                                </allowedAspectRatios>
                            </default>
                        </cropVariants>
                    </config>
                </crop>
            </columns>
        </overrideChildTca>
    </config>
</foreign_selector_fieldTcaOverride>

Кто-нибудь делал это раньше?

Если это невозможно, может, я смогу обойти гибкую форму? В настоящее время у меня есть gridelement с полем изображения.

[ОБНОВЛЕНИЕ] Как заметил @fnagel, это должно быть возможно с переопределением значения по умолчанию, поэтому я попытался поместить следующее в мои Overrides / sys_file_reference.php - но это не повлияло - я даже не смог найти это определение по умолчанию в TCA-Inspector ...

$GLOBALS['TCA']['sys_file_reference']['columns']['crop']['config‌']['cropVariants‌​']['default'] = [
    'title' => 'LLL:EXT:al_template/Resources/Private/Language/locallang_be.xlf:wizard.gallery.title',
    'allowedAspectRatios' => [
        'NaN' => [
            'title' => 'LLL:EXT:al_template/Resources/Private/Language/locallang_be.xlf:field.gallery.image-crop.ratio',
            'value' => 0.0
        ],
    ],
];

написание ot as также не влияет ...

 \TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(
    $GLOBALS['TCA']['sys_file_reference'],
    [
        'columns' =>[
            'crop' => [
                'config‌' => [
                    'cropVariants‌​' => [
                        'default'=> [
                            'title' => 'LLL:EXT:al_template/Resources/Private/Language/locallang_be.xlf:wizard.gallery.title',
                            'allowedAspectRatios' => [
                                'NaN' => [
                                    'title' => 'LLL:EXT:al_template/Resources/Private/Language/locallang_be.xlf:field.gallery.image-crop.ratio',
                                    'value' => 0.0
                                ],
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ]
);

Кто-нибудь с успешной настройкой для этого?


person Tobias Gaertner    schedule 29.11.2017    source источник
comment
Это не ответ, но я думаю, что НАИЛУЧШИЙ СПОСОБ - избегать поля изображения во флексформе. Это легко сделать без flexform - так что это будет моя стратегия выбора на будущее.   -  person Tobias Gaertner    schedule 09.03.2018


Ответы (2)


Чтобы разрешить манипуляции с изображениями в гибкой форме, вы должны включить их через свойство overrideChildTca.

Пример гибкой формы:

        <background_image type="array">
            <TCEforms>
                <label>LLL:EXT:myext/Resources/Private/Language/Backend.xlf:background_image
                </label>
                <config>
                    <type>inline</type>
                    <minitems>1</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>
                    <overrideChildTca>
                        <types type="array">
                            <numIndex index="0" type="array">
                                <showitem>
                                    --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                                    --palette--;;filePalette
                                </showitem>
                            </numIndex>
                            <numIndex index="1" type="array">
                                <showitem>
                                    --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                                    --palette--;;filePalette
                                </showitem>
                            </numIndex>
                            <numIndex index="2" type="array">
                                <showitem>
                                    --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                                    --palette--;;filePalette
                                </showitem>
                            </numIndex>
                            <numIndex index="3" type="array">
                                <showitem>
                                    --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.audioOverlayPalette;audioOverlayPalette,
                                    --palette--;;filePalette
                                </showitem>
                            </numIndex>
                            <numIndex index="4" type="array">
                                <showitem>
                                    --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.videoOverlayPalette;videoOverlayPalette,
                                    --palette--;;filePalette
                                </showitem>
                            </numIndex>
                            <numIndex index="5" type="array">
                                <showitem>
                                    --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                                    --palette--;;filePalette
                                </showitem>
                            </numIndex>
                        </types>
                    </overrideChildTca>
                </config>
            </TCEforms>
        </background_image>

После включения вы можете определить пользовательское соотношение через TsConfig:

TCEFORM.sys_file_reference.crop.config.cropVariants {
  default {
    title = LLL:EXT:lang/Resources/Private/Language/locallang_wizards.xlf:imwizard.ratio.free
    selectedRatio = NaN
    allowedAspectRatios {
      NaN {
        title = free
        value = 0.0
      }
    }
  }
}

Работает на TYPO3 8 LTS

person CyJ    schedule 15.03.2018
comment
Итак, это ответ на вопрос. В любом случае я рекомендую больше не использовать flexform для данных - поэтому, наконец, я использовал поле TCA для изображения и выполнил переопределение, как указано в вопросе. - person Tobias Gaertner; 22.03.2018

Невозможно, афаик. Вам нужно будет установить общее значение по умолчанию и настроить его для всех других элементов с помощью TCA.

person fnagel    schedule 29.11.2017
comment
Спасибо! Любой намек, как сделать по умолчанию? Я сделал $ GLOBALS ['TCA'] ['tt_content'] ['columns'] ['image'] ['config'] ['overrideChildTca'] ['columns'] ['crop'] ['config'] [ 'cropVariants'] ['default'] - но это не влияет на гибкую форму. - person Tobias Gaertner; 01.12.2017
comment
Попробуйте использовать файл переопределения: \Configuration\TCA\Overrides\sys_file_reference.php с $GLOBALS['TCA']['sys_file_reference']['columns']['crop']['config']['cropVariants']['default'] = [...] - person fnagel; 01.12.2017
comment
О верно! Сделал это уже для ImageOverlayPalette - проверю! - person Tobias Gaertner; 01.12.2017
comment
Я попробовал это (см. Обновленный вопрос), но безуспешно ... может быть, вы заметили мою ошибку? - person Tobias Gaertner; 05.12.2017