1

我在后端制作了一个 TCA 表单,根据选择字段“类型”中的值会发生什么变化:

此选择字段基本上包含以下选项:

  • 文本
  • 网址
  • 图片

I can make the system working so, that when "rte text" is chosen, it shows specified fields for "rte text", when url is chosen it shows specified fields for "url" etc..

在我的情况下,内容始终保存在“内容”字段中的数据库中,并且所选类型保存在“类型”字段中。

我的问题是我还没有找到根据所选类型更改“内容”表单字段/配置的方法。

例如,当我选择“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,
        )
    ),

有没有办法根据选择框中的值更改该配置。我试图将两个内容放在一个数组中,但没有让它以这种方式工作。

4

1 回答 1

3

不幸的是,您无法通过 更改单个字段的属性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

于 2012-03-19T21:43:37.310 回答