長い間この問題に注意を払った後、私は適切で迅速な解決策を見つけました.6か月の科学の作成後、私は次のことを学びました:
正解:
$traindate = new Element\DateTime('trainDate');
$traindate->setAttributes(array(
'name' => 'trainDate',
'id' => 'trainDate',
'size' => '30',
'class' => 'datepicker',
));
$traindate->setFormat('d/m/Y'); //ONLY WORKS ON THIS FORMAT.
ドキュメントやインターネット上の人々はそれを明確にしませんが、フォーマットを設定することはこのフォームでのみ機能します。
これをエンティティに取り込むには、DoctrineHydratorを拡張する独自のHydratorを作成する必要があります:
namespace Application\Hydrator;
use DoctrineModule\Stdlib\Hydrator\DoctrineObject;
class MyCustomHydrator extends DoctrineObject {
protected function handleTypeConversions($value, $typeOfField)
{
if($typeOfField == 'datetime'){
return \DateTime::createFromFormat('d/m/Y', $value);
}
return parent::handleTypeConversions($value, $typeOfField);
}
}
これにより、任意の日付形式での作業が簡単になります。必要に応じて、このカスタムハイドレーターでロケールアサーションをさらに作成することができます。