Typo3, TCA формы просмотра в зависимости от выбранной опции - PullRequest
1 голос
/ 19 марта 2012

Я сделал в бэкэнде форму TCA, что изменится в зависимости от значения в поле выбора "type":

Это поле выбора содержит в основном параметры:

  • rtetext
  • url
  • picture

Я могу заставить систему работать так, чтобы при выборе «rte text» отображались определенные поля для «rte text», когда выбран URL-адрес, он показывает указанные поля для «URL-адреса» и т. д.

В моем случае содержимое всегда сохраняется в базе данных в поле «содержимое», а выбранный тип сохраняется в поле «тип».

Моя проблема в том, что я не нашел способа изменить поле / конфигурацию поля «контент» в зависимости от выбранного типа.

Например, когда я выбираю «rte text», он должен использоватьдля поля контента этот тип конфигурации (редактор текстового редактора):

'content' => array (        
        'exclude' => 0,     
        'label' => 'Content',       
        'config' => array (
            'type' => 'text',
            'cols' => '30',
            'rows' => '5',
            'wizards' => array(
                '_PADDING' => 2,
                'RTE' => array(
                    'notNewRecords' => 1,
                    'RTEonly'       => 1,
                    'type'          => 'script',
                    'title'         => 'Full screen Rich Text Editing|Formatteret redigering i hele vinduet',
                    'icon'          => 'wizard_rte2.gif',
                    'script'        => 'wizard_rte.php',
                ),
            ),
        )
    ),

, и когда я выбираю «изображение», он должен использовать для поля контента этот вид конфигурации (загрузчик файлов):

'content' => array (        
        'exclude' => 0,     
        'label' => 'Content',       
        'config' => array (
            'type' => 'group',
            'internal_type' => 'file',
            'allowed' => '',    
            'disallowed' => 'php,php3', 
            'max_size' => $GLOBALS['TYPO3_CONF_VARS']['BE']['maxFileSize'], 
            'uploadfolder' => 'uploads/tx_uploadshere',
            'size' => 1,    
            'minitems' => 0,
            'maxitems' => 1,
        )
    ),

Есть ли способ изменить этоконфигурация в зависимости от значения в поле выбора.Я попытался поместить два содержимого в массив, но так не получилось.

1 Ответ

3 голосов
/ 20 марта 2012

К сожалению, вы не можете изменить свойства одного поля с помощью type.

Однако вы можете влиять на то, что отображается.Таким образом, вы можете настроить два независимых поля и переключить отображение:

ext_tables.php :

$TCA['tx_yourextension_yourtable'] = array(
    'ctrl' => array(
        //...
        'type'=>'type',
        //...
    ),
);

TCA.php :

$TCA['tx_yourextension_yourtable'] = array(
    'ctrl' => $TCA['tx_yourextension_yourtable']['ctrl'],
    'types' => array(
        0 => array('showitem' => 'content_rte'),
        1 => array('showitem' => 'content_image'),
    ),
    'columns' => array(
        'content_rte' => array(
            'exclude' => 0,
            'label' => 'Content',
            'config' => array(
                'type' => 'text',
                'cols' => '30',
                'rows' => '5',
                'wizards' => array(
                    '_PADDING' => 2,
                    'RTE' => array(
                        'notNewRecords' => 1,
                        'RTEonly' => 1,
                        'type' => 'script',
                        'title' => 'Full screen Rich Text Editing|Formatteret redigering i hele vinduet',
                        'icon' => 'wizard_rte2.gif',
                        'script' => 'wizard_rte.php',
                    ),
                ),
            )
        ),
        'content_upload' => array(
            'exclude' => 0,
            'label' => 'Content',
            'config' => array(
                'type' => 'group',
                'internal_type' => 'file',
                'allowed' => '',
                'disallowed' => 'php,php3',
                'max_size' => $GLOBALS['TYPO3_CONF_VARS']['BE']['maxFileSize'],
                'uploadfolder' => 'uploads/tx_uploadshere',
                'size' => 1,
                'minitems' => 0,
                'maxitems' => 1,
            )
        ),
    ),
    // ...
);

(Примечание: я удалил системные поля, такие как hidden, sys_language_uid и т. Д. Для простоты)

...