TYPO3 9 LTC类型转换错误在TCA类型输入/ dbType节省时间的空字段的mysql时间字段上

时间:2019-07-10 06:31:30

标签: mysql typo3 typo3-9.x typo3-tca

我试图在TYPO3 9 LTS中与MySQL 5.7.24一起使用时间输入。

ext_tables.sql中,该字段的定义如下:

some_field time default NULL

在TCA中,该字段的定义如下:

  'some_field' => [
    'exclude' => 1,
    'label' => 'Some field',
    'config' => [
      'type' => 'input',
      'dbType' => 'time',
      'eval' => 'time',
    ],
  ],

在没有时间输入的情况下将记录保存在后端时(应该是可能的),我得到了错误:

These fields of record 1 in table "some_table" have not been saved correctly: some_field! The values might have changed due to type casting of the database.

查看数据库记录时,some_field字段将获得值00:00:00(尽管数据库默认值为NULL)。

选择时间时,可以保存并打开记录而不会出错。

这是TYPO3中的错误还是我该如何解决此问题?

2 个答案:

答案 0 :(得分:0)

这意味着您为ext_tables.sql中的值输入了错误的类型。此外,TYPO3 v9具有renderTypes。 尝试类似的事情:

ext_tables.sql

begin int(11) DEFAULT '0' NOT NULL

TCA

'begin' => [
   'exclude' => true,
   'label' => 'LLL:EXT:your_ext/Resources/Private/Language/locallang_db.xlf:tx_yourext_domain_model_modelname.begin',
   'config' => [
        'type' => 'input',
        'renderType' => 'inputDateTime',
         'size' => 10,
         'eval' => 'datetime',
         'default' => time()
     ],
],

其他信息!

如果要在FrontEnd中显示时间,可以使用类似的方法

<f:format.date>{dateObject.begin}</f:format.date>

如果要修改外观,还可以使用 format 属性:

<f:format.date format="%d. %B %Y">{dateObject.begin}</f:format.date>

有关此内容的更多信息:TYPO3 Date format

答案 1 :(得分:0)

可以通过以下eval解决该错误:

'eval' => 'time,null',