Na een lange tijd aandacht te hebben besteed aan dit probleem vond ik de juiste en snelle oplossing. Na 6 maanden wetenschap te hebben gemaakt, kreeg ik:
Goed allemaal:
$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.
Documenten en mensen via internet maken het niet duidelijk, maar Formaat instellen werkt alleen op dit formulier.
En om dit naar Entity te grijpen, moet je je eigen Hydrator schrijven die de DoctrineHydrator uitbreidt:
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);
}
}
Het maakt het eenvoudig om met elk datumformaat te werken. Je kunt het maken van Locale beweringen op deze Custom Hydrator uitbreiden zoals je wilt.