Sau một thời gian chú ý đến vấn đề này tôi đã tìm ra giải pháp nhanh chóng và đúng đắn. Sau 6 tháng làm khoa học, tôi nhận được:
Tất cả đều đúng:
$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.
Tài liệu và những người trên internet không làm rõ điều đó, nhưng để đặt Định dạng chỉ hoạt động trên biểu mẫu này.
Và để đưa nó cho Thực thể, bạn cần viết Hydrator của riêng mình để mở rộng DoctrineHydrator:
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);
}
}
Nó làm cho nó trở nên đơn giản để làm việc với bất kỳ định dạng ngày nào. Bạn có thể mở rộng thêm việc đưa ra các xác nhận về Ngôn ngữ trên Bình ủ nước tùy chỉnh này như bạn muốn.