繁体   English   中英

TYPO3-TCA-日期时间格式

[英]TYPO3 - TCA - Datetimeformat

Typo3 6.2,正在我的个人扩展上。 我在此TCA中使用了flexform:

'eventdate' => array(
    'exclude' => 1,
    'label' => 'Date of event :',
    'config' => array(
        'type' => 'input',
        'size' => 30,
        'eval'     => 'datetime',
        'checkbox' => '0',
        'default'  => time(),
    ),
),

...而我的SQL字段是DATETIME,来自我的ext_tables.sql示例:

CREATE TABLE xxxxxxx
(
    eventdate DATETIME NOT NULL,
);

问题:保存时,由Typo3生成的字段格式为hh:mm:ss dd:mm:yyyy,但是在我的SQL表中,日期时间格式为yyyy-mm-dd hh:mm:ss ,然后在用户尝试时会出错保存在后端:

1:数据库中的这些字段未正确更新:(事件日期)可能与字段类型的值不匹配。

如何解决这个问题?

我认为int DATA TYPE是在数据库中以tstamp格式存储DATE的最佳方法。

您需要定义如下的eventdate DATA TYPE

CREATE TABLE xxxxxxx
(
    eventdate int(11) unsigned DEFAULT '0' NOT NULL,
);

原始问题的TCA配置dbType属性,该属性指示TYPO3在将数据保存到DataHandler中时使用不同的时间格式(默认格式为unix timestamp,已标准化为UTC)。

有关详细信息,请参见https://docs.typo3.org/typo3cms/TCAReference/7.6/Reference/Columns/Input/#dbtype (该文档适用于TYPO3 7.6,但自TYPO3 6.0起也可以使用)。

ext_tables.sql

CREATE TABLE tx_myextension_xxxxxxx (
   eventdate DATETIME default NULL
)

TCA现场配置

'eventdate' => array(
    'exclude' => 1,
    'label' => 'Date of event:',
    'config' => array(
        'type' => 'input',
        'size' => 30,
        'eval'     => 'datetime',
        'dbType'   => 'datetime',
        'default'  => date('Y-m-d H:i:s'),
    ),
),
  • 删除了对于类型input来说多余的checkbox
  • 调整为date('Ymd H:i:s')默认值date('Ymd H:i:s')
  • 添加了dbType属性

TYPO3 v8的旁注

请参阅https://docs.typo3.org/typo3cms/TCAReference/8.7/ColumnsConfig/Type/Input.html#rendertype-in​​putdatetime ,其中显示了可在TYPO3 v8中使用的datetime值的新渲染类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM