【发布时间】:2017-08-21 08:51:03
【问题描述】:
我有一个表格,基于 TYPO3 7.6 中的 Extbase an Fluid。每次在任何字段中发生验证错误时,都会根据需要再次显示表单以显示验证错误。
但每次再次显示表单并在日期字段中输入值时,都会出现错误消息htmlspecialchars() expects parameter 1 to be string, object given。
我想摆脱这个错误信息。
控制器中有一个日期属性:
<?php
namespace Vendor\Extension\Domain\Model;
class Person extends BaseDto
{
/**
* @var \DateTime $privatePersonBirthdate
*/
protected $privatePersonBirthdate;
/**
* @param \DateTime $privatePersonBirthdate
*/
public function setPrivatePersonBirthdate($privatePersonBirthdate)
{
$this->privatePersonBirthdate = $privatePersonBirthdate;
}
/**
* @return \DateTime
*/
public function getPrivatePersonBirthdate()
{
return $this->privatePersonBirthdate;
}
}
模板:
<f:form.textfield property="privatePersonBirthdate" />
控制器中的属性配置:
$conf->forProperty('privatePersonBirthdate')->setTypeConverterOption('TYPO3\\CMS\\Extbase\\Property\\TypeConverter\\DateTimeConverter', \TYPO3\CMS\Extbase\Property\TypeConverter\DateTimeConverter::CONFIGURATION_DATE_FORMAT, 'd.m.Y');
我已经在网上找到了一些类似的报道,比如https://forge.typo3.org/issues/4268。
使用 value 属性的解决方法会起作用,但也会破坏用户在验证错误时在表单中输入的值:
<f:form.textfield property="privatePersonBirthdate" value="{f:format.date(date: person.privatePersonBirthdate, format: 'd.m.Y')}" />
我好像少了点什么。我不明白。你知道如何解决这个问题吗?
【问题讨论】:
-
选项
features.rewrittenPropertyMapper自 TYPO3 7 以来已被删除,因此这对您的问题没有影响。你在哪里初始化属性配置?请确保您仅将其用于initializeSaveAction -
感谢
features.rewrittenPropertyMapper的提示。我在initializeFormAction和initializeSaveAction操作中初始化了属性配置。如果我只在initializeSaveAction中执行此操作,则错误确实会消失,但我之前输入的日期不会显示在验证错误的表单字段中。
标签: typo3 fluid extbase typo3-7.6.x