代码之家  ›  专栏  ›  技术社区  ›  Paolito75

类型3-TCA-日期时间格式

  •  2
  • Paolito75  · 技术社区  · 7 年前

    键入3 6.2,处理我的个人分机。 我将flexform用于此TCA:

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

    ... 我的SQL字段是一个DATETIME,来自ext\u表的示例。sql:

    CREATE TABLE xxxxxxx
    (
        eventdate DATETIME NOT NULL,
    );
    

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

    1: 数据库中的这些字段未正确更新:(eventdate) 值可能与fieldtype不匹配。

    如何解决此问题?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Pravin Vavadiya    7 年前

    我想 int DATA TYPE 是在DB中以tstamp格式存储日期的最佳方式。

    您需要像下面这样定义eventdate数据类型

    CREATE TABLE xxxxxxx
    (
        eventdate int(11) unsigned DEFAULT '0' NOT NULL,
    );
    
        2
  •  2
  •   Oliver Hader    7 年前

    原始问题的TCA配置遗漏了 dbType 在中保存数据时指示键入3的属性 DataHandler 使用不同的时间格式(默认格式为unix时间戳,标准化为UTC)。

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

    ext\U表格。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'),
        ),
    ),
    
    • 远离的 checkbox 这对于类型来说是多余的 input
    • 将默认值调整为 date('Y-m-d H:i:s')
    • 补充 数据库类型 所有物

    TYPO3 v8的旁注

    看见 https://docs.typo3.org/typo3cms/TCAReference/8.7/ColumnsConfig/Type/Input.html#rendertype-inputdatetime 显示的新渲染类型 datetime 可在TYPO3 v8中使用的值。