1

在typo3流中获取/设置日期时间到/从流体的标准方法是什么?

是否有可编辑的 html 字段 - 就像基本的 f:form.textfield - 将允许输入、编辑和保留日期时间?

我知道我可以使用 eg 显示日期 时间,<f:format.date format="d.m.Y - H:i:s">{productArticle.classdate}</f:format.date> 但在这种情况下,值为 null 不会显示任何内容,并且无论如何都无法输入。在某些版本中,属性是否与 f:format.date 一起使用?当我尝试时,我得到“财产未注册”。

或者我是否需要在我的页面上有两个字段,一个用于日期,一个用于时间,我将它们放在操作中?

谢谢

4

1 回答 1

4

我不确定这是否是标准方式,而且我个人不喜欢它..但可以这样做:

在流体中用于新/编辑操作:

<f:form action="create" objectName="girlfriend">
...
<f:form.textfield property="birthDate" placeholder="1991-12-30 - 18:25:58" value="{newGirlfriend.birthDate->f:format.date(format:'Y-m-d - H:i:s')}" />
...
</f:form>

在您的控制器中,您可以为 \DateTime 添加 initialize*Action 和更新propertyMappingConfiguration如果标准对您不利(必须为创建和更新操作完成):

public function initializeCreateAction() {
    $mappingConfig = $this->arguments['girlfriend']->getPropertyMappingConfiguration();
    $mappingConfig->forProperty('birthDate')->setTypeConverterOption(
        'TYPO3\Flow\Property\TypeConverter\DateTimeConverter',
        \TYPO3\Flow\Property\TypeConverter\DateTimeConverter::CONFIGURATION_DATE_FORMAT,
        'Y-m-d - H:i:s'
    );
}

有时不将对象直接传递给控制器​​而是在服务层上创建它更容易。您还可以查看 TypeConverters - 它们不需要 initializeActions,您可以轻松覆盖现有的设置更高优先级的..

于 2014-11-28T11:00:09.773 回答