1

我有一个这样定义的字段:

max_items int(11) NULL

如果您在后端将此字段留空,我希望它存储 NULL。

为此,我在 TCA 中使用此配置,但它不起作用:

'max_items' => array(
    'exclude' => 0,
    'label' => '...',
    'config' => array(
        'type' => 'input',
        'eval' => 'null',
    ),
),

编辑:它不存储期望值NULL,而是存储0. 我试过max_items int(11) DEFAULT NULL了,但也没有用。

Edit2:谢谢新鲜!我最终编写了自己的 eval 函数:

<?php
class tx_myextension_evalfunc {
    function evaluateFieldValue($sValue, $aIsIn, &$bSet)
    {
        return ($sValue === '') ? null : $sValue;
    }
}
?>

使用此配置:

'max_items' => array(
    'exclude' => 0,
    'label' => '...',
    'config' => array(
        'type' => 'input',
        'eval' => 'tx_myextension_evalfunc',
    ),
),
4

1 回答 1

2

旧 TYPO3 版本中有一个错误:

TYPO3 后端的当前实现不允许存储 NULL 值,只允许空字符串或零作为数字。

此错误已在 TYPO3 6.0 及更高版本中修复。在 TCA 配置中有一个新的 eval 选项“null”:

'config' = array(
  'type' => 'input',
  'eval' => 'null',
  ...
);

如果启用此选项,则输入右侧有一个复选框。如果未激活,则将 NULL 值保存到数据库中,如果已激活,则可以输入整数值。

如果您想禁用默认复选框以将 Null 存储为默认值,请将 'default' => null 添加到其中:

'config' = array(
  'type' => 'input',
  'eval' => 'null',
  'default' => null,
);

在 TYPO3 8 LTS 中测试。然后它看起来像这样:

在此处输入图像描述


原答案:

有两个有趣的链接供您参考:

于 2013-08-09T13:38:04.657 回答