Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ZF2 validando formato de data e hora PT_BR sempre A entrada não parece ser uma data válida


Depois de muito tempo prestando atenção nesse problema, encontrei a solução certa e rápida. Após 6 meses fazendo ciência, obtive:

Certo tudo:
    $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.

Docs e pessoas pela internet não deixam claro, mas definir Format só funciona neste formulário.

E para pegar isso na Entity, você precisa escrever seu próprio Hydrator estendendo o 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);
    }
}

É simplificar o trabalho com qualquer formato de data. Você pode estender ainda mais as declarações de Localidade neste Hidratante Personalizado conforme desejar.