【问题标题】:Backend TCA: possible to make a field nullable?后端 TCA:可以使字段为空吗?
【发布时间】:2015-12-18 12:17:32
【问题描述】:

我需要一个后端字段,用户可以在其中输入时间(即“23:13:46”、小时、分钟、秒)。但也应该可以根本不输入时间(当然应该不同于 00:00:00)。是否可以使字段可为空?

到目前为止,我所拥有的是:

$GLOBALS['TCA']['tx_something_domain_model_delivery'] = array(
    'columns' => array(     
        'deadline' => array(
            'exclude' => 1,
            'label' => 'Deadline',
            'config' => array(
                'dbType' => 'time',
                'type' => 'input',
            ),
        ),
        ...
    ),
);

但如果我在截止日期字段中不输入任何内容,它会将“00:00:00”存储到数据库中。数据库如下所示:

CREATE TABLE IF NOT EXISTS `tx_something_domain_model_delivery` (
  `uid` int(11) NOT NULL,
  `pid` int(11) NOT NULL DEFAULT '0',
  `deadline` time DEFAULT NULL,
  ... 
);

所以截止日期可以为空,但我不知道如何实现这一点。

顺便说一句:我是typo3的新手,所以如果您认为我创建该领域的方式有问题或者有更好的方法,我会很感激任何建议。

【问题讨论】:

    标签: typo3 nullable extbase


    【解决方案1】:

    首先:您正在按照预期的方式创建字段:-)

    第二:需要在字段的配置中使用eval属性。将设置 null 添加到它。您的配置应如下所示:

    $GLOBALS['TCA']['tx_something_domain_model_delivery'] = array(
        'columns' => array(     
            'deadline' => array(
                'exclude' => 1,
                'label' => 'Deadline',
                'config' => array(
                    'dbType' => 'time',
                    'type' => 'input',
                    'eval' => 'null',
                ),
            ),
            ...
        ),
    );
    

    eval 设置还有更多您可能感兴趣的设置。

    【讨论】:

    • 我试过了,但是当我将该字段留空时,由于某种原因,它仍然将“00:00:00”写入数据库。谢谢你的回答!
    • 如果你插入了“00:00:00”,这是由于 SQL 字段的默认值是“00:00:00”。你可以在 ext_tables.sql 中检查,你会具有默认值,因此您会看到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    相关资源
    最近更新 更多