Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TYPO3会不时在一个字段中重置所有日期时间_Typo3_Extbase - Fatal编程技术网

TYPO3会不时在一个字段中重置所有日期时间

TYPO3会不时在一个字段中重置所有日期时间,typo3,extbase,Typo3,Extbase,我几个月前写的extbase扩展有问题: 正常情况下,一切正常,但在某个时刻,系统会将某个字段的所有DateTime信息更新回表的每个条目中的1.1.1970 有一种课程模式。这些包含三个日期时间字段。课程的日期、开始和结束。问题只发生在日期字段中。在模型中,其定义如下: /** * date * * @var \DateTime */ protected $date = NULL; ** * Returns the date * * @return \DateTime $da

我几个月前写的extbase扩展有问题: 正常情况下,一切正常,但在某个时刻,系统会将某个字段的所有DateTime信息更新回表的每个条目中的1.1.1970

有一种课程模式。这些包含三个日期时间字段。课程的日期、开始和结束。问题只发生在日期字段中。在模型中,其定义如下:

/**
 * date
 *
 * @var \DateTime
 */
protected $date = NULL;


**
 * Returns the date
 *
 * @return \DateTime $date
 */
public function getDate() {
    return $this->date;
}

/**
 * Sets the date
 *
 * @param \DateTime $date
 * @return void
 */
public function setDate(\DateTime $date) {
    $this->date = $date;
}
在TCA中,定义为:

    'date' => array(
        'exclude' => 1,
        'label' => 'shortend for example',
        'config' => array(
            'type' => 'input',
            'size' => 7,
            'eval' => 'date',
            'checkbox' => 1,
            'default' => time()
        ),
    ),
在数据库(MySQL)中,字段设置为INT(11)

  • 没有活动的cron作业
  • 我没有设置date anywhere手册(仅通过extbase依赖项注入机制)
我不知道为什么会这样,也不知道是什么原因引起的。自去年11月该页面发布以来,已经发生了三次

还有一件更奇怪的事情:Evendo所有的“date”值都被更新,现在显示的是1970年1月1日的datevalue,这些值是不同的(那些是整数),并显示2的幂(从128开始)或它们的组合(例如q.1'792(1024+512+256))

我唯一能复制的东西是: 当一个courseitem从一个系统文件夹移动到另一个系统文件夹时,该项目的日期(但不是所有项目的日期,就像在另一个错误中一样)会下降到1.1.1970

如果有人能帮助我,即使是暗示或怀疑,我也会非常高兴,因为可能会发生什么问题,或者为什么会发生这种情况。每次导入另一个备份后,都会感觉定时炸弹在滴答作响,这一点都不光彩;)

提前谢谢
xan

我想添加它作为评论,但我不允许(因为我的声誉)


我预计php中的DateTime对象会出现问题,以及它如何存储在存储库中。mysql字段是一个int。php中的DateTime不是整数,而是一个对象。在将日期时间保存到数据库之前,可能需要将其转换为时间戳(=整数)

我认为你的最后一句话指向了解决方案:

还有一件更奇怪的事情:Evendo所有的“date”值都被更新,现在显示的是1970年1月1日的datevalue,这些值是不同的(那些是整数),并显示2的幂(从128开始)或它们的组合(例如q.1'792(1024+512+256))


我怀疑在表设置的
ctrl
部分,您将
日期
字段设置为
排序
列。因此,在移动记录时,TYPO3将更改相应的值,以确保记录的正确顺序,例如在后端列表中或在为前端输出选择记录时。为了便于在某处插入记录(而不必对所有内容重新排序),TYPO3默认使用2的倍数。

我从未在TCA中使用过“default”=>time()。。也许这就是问题所在?尝试删除“默认”行。。据我所知,如果没有“默认值”=>0,extbase会自动设置当前时间……谢谢你的建议。我直接尝试了一下,创建了一个新项目(正确的日期),之后又移动了=>错误的日期。你使用哪一个版本?由于TYPO3 4.5,输入字段上的“复选框”属性不再使用。。我不认为这是你问题的解决方案,但我还是想说。我真的认为“默认值”=>time()是问题所在。。删除线路后是否清除了整个缓存?请删除该行并重新安装扩展或清除安装工具中的缓存。。问题在于,当您设置default=>time()时,当前时间戳缓存在TCA中,如果系统缓存未失效,则可能会导致错误的默认值…安装了TYPO3 6.2.15。复选框是一个很好的提示,谢谢。但是,是的,我在那之后清除了整个缓存,多次(我试了不止一次)。我会再试一次,但到目前为止,在行为上没有区别。非常感谢你的努力!我不这么认为,因为正如typo3tcaReference所说:“将字段设置为评估输入,以UNIX时间(秒)返回数据库的日期”。如果设置了,Extbase将为您执行转换。”评估“=>”日期“,。。()搜索“设置字段以将输入评估为日期”。。如果我错了,请纠正我。经过这么长时间——这就是它!非常感谢,配置确实设置为sortby->crashing字段。我将立即改变这一点,并在以后的项目中牢记这一点。再次感谢你,沃尔夫先生!