Mysql
 sql >> Datenbank >  >> RDS >> Mysql

ZF2 validiert Datums- und Zeitformat PT_BR immer Die Eingabe scheint kein gültiges Datum zu sein

Nachdem ich mich lange mit diesem Problem befasst hatte, fand ich die richtige und schnelle Lösung. Nach 6 Monaten wissenschaftlicher Arbeit bekam ich:

Alles klar:

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

Dokumente und Leute über das Internet machen es nicht klar, aber das Festlegen des Formats funktioniert nur in diesem Formular.

Und um dies zu Entity zu bringen, müssen Sie Ihren eigenen Hydrator schreiben, der den DoctrineHydrator erweitert:

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);
    }
}

Es macht es einfach, mit jedem Datumsformat zu arbeiten. Sie können weitere Gebietsschema-Assertionen für diesen benutzerdefinierten Hydrator nach Belieben erweitern.