TYPO3 7.6のExtbaseに基づいてフォームを取得しました。どのフィールドでも検証エラーが発生するたびに、フォームが再度表示され、検証エラーが表示されます。 フォームが再び表示され、日付フィールドに値が入力されるたびに、エラーメッセージhtmlspecialchars() expects parameter 1 to be string, object given
が表示されます。TYPO3 7.6 Extbase/Fluidフォーム:htmlspecialchars()は、パラメータ1が文字列であることを期待しています。
私はこのエラーメッセージを取り除きたいと思います。
コントローラは、その中dateプロパティを持っています
<?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;
}
}
テンプレート:私はすでにのように、オンラインいくつかの類似したレポートを見つけ
$conf->forProperty('privatePersonBirthdate')->setTypeConverterOption('TYPO3\\CMS\\Extbase\\Property\\TypeConverter\\DateTimeConverter', \TYPO3\CMS\Extbase\Property\TypeConverter\DateTimeConverter::CONFIGURATION_DATE_FORMAT, 'd.m.Y');
:コントローラで
<f:form.textfield property="privatePersonBirthdate" />
プロパティの設定https://forge.typo3.org/issues/4268。
属性が仕事と値を使用して、だけでなく、ユーザーが検証エラーのフォームに入力された値を破棄し、回避策:
<f:form.textfield property="privatePersonBirthdate" value="{f:format.date(date: person.privatePersonBirthdate, format: 'd.m.Y')}" />
何かが欠けているように私には思えます。私はそれを取得しません。あなたはこの問題を解決する方法を知っていますか?
オプションを 'features.rewrittenPropertyMapper'がTYPO3 7以降削除されているので、これが影響を与えることはありませんあなたの問題に。 プロパティ設定をどこで初期化しましたか? 'initializeSaveAction'のためだけに使用してください。 – derhansen
' features.rewrittenPropertyMapper'についてのヒントをありがとう。 'initializeFormAction'アクションと' initializeSaveAction'アクションの両方でプロパティ設定を初期化します。私が 'initializeSaveAction'でのみ行うとエラーは実際には消えますが、前に入力した日付は検証エラーのフォームフィールドに表示されません。 –