Mysql
 sql >> Base de données >  >> RDS >> Mysql

ZF2 valide le format de la date et de l'heure PT_BR toujours L'entrée ne semble pas être une date valide

Après avoir longtemps porté mon attention sur ce problème, j'ai trouvé la bonne solution rapide. Après 6 mois de science, j'ai obtenu :

Tout à fait :

    $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.

Les documents et les personnes sur Internet ne le précisent pas, mais définir le format ne fonctionne que sur ce formulaire.

Et pour saisir cela dans Entity, vous devez écrire votre propre Hydrator étendant 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);
    }
}

Cela simplifie le travail avec n'importe quel format de date. Vous pouvez étendre davantage les assertions Locale sur cet Hydrator personnalisé comme vous le souhaitez.