Typo3,TCA根据所选选项形成视图

时间:2012-03-19 14:57:01

标签: typo3 typo3-tca

我在后端制作了一个TCA表格,根据选择字段中的值改变了什么"输入":

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

  • rte text
  • URL
  • 图片

我可以使系统工作,当" rte文本"选择后,它会显示" 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,
        )
    ),

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

1 个答案:

答案 0 :(得分: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,
            )
        ),
    ),
    // ...
);

(注意:为了简单起见,我删除了hiddensys_language_uid等系统字段。