Loading code/test3.php +54 −0 Original line number Diff line number Diff line Loading @@ -7,3 +7,57 @@ * @var $viewName string * @var $viewFile string */ $form = new \Laminas\Form\Form(); $form->add([ 'type' => 'Date', 'name' => 'd1', 'options' => [ 'label' => 'Date de début', ], 'attributes' => [ 'step' => '1', ], ]); $form->add([ 'type' => 'DateTime', 'name' => 'd2', 'options' => [ 'label' => 'Date de début', ], 'attributes' => [ 'step' => '60', ], ]); $form->add([ 'name' => 'submit', 'type' => 'Submit', 'attributes' => [ 'value' => 'Enregistrer', 'class' => 'btn btn-primary', ], ]); //$form->inpu var_dump($_POST); if (isset($_POST['d1'])) { $d1 = \Application\Filter\DateTimeFromString::run($_POST['d1']); var_dump($d1); } if (isset($_POST['d2'])) { $d2 = \Application\Filter\DateTimeFromString::run($_POST['d2']); var_dump($d2); } $form->get('d1')->setValue($d1?->format('Y-m-d\TH:i')); $form->get('d2')->setValue($d2?->format('Y-m-d\TH:i')); echo $this->form($form); No newline at end of file module/Application/src/Filter/DateTimeFromString.php 0 → 100644 +50 −0 Original line number Diff line number Diff line <?php namespace Application\Filter; use Laminas\Filter\AbstractFilter; class DateTimeFromString extends AbstractFilter { private static $instance; public function filter($value) { if ($value === '') return null; return $this->convert($value); } protected function convert($value): ?\DateTime { if (!$value) return null; $datetime = null; if (strlen($value) == 10) { $value .= "T00:00:00"; } elseif (strlen($value) == 16) { $value .= ":00"; } $datetime = \DateTime::createFromFormat('Y-m-d\TH:i:s', $value); if ($datetime instanceof \DateTime) return $datetime; return null; } public static function run($value) { if (!self::$instance) { self::$instance = new self; } return self::$instance->filter($value); } } No newline at end of file module/Application/src/Form/Agrement/Saisie.php +8 −4 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Application\Form\Agrement; use Application\Constants; use Application\Filter\DateTimeFromString; use Application\Form\AbstractForm; use Laminas\Form\Element\Csrf; use Laminas\Hydrator\ClassMethodsHydrator; Loading @@ -25,10 +26,9 @@ class Saisie extends AbstractForm $this->add([ 'name' => 'dateDecision', 'type' => 'DateTime', 'type' => 'Date', 'options' => [ 'label' => "Date de la décision", 'format' => Constants::DATE_FORMAT, ], 'attributes' => [ 'id' => uniqid('dateDecision'), Loading Loading @@ -67,6 +67,10 @@ class Saisie extends AbstractForm } } class AgreementRetourFormHydrator implements HydratorInterface { Loading @@ -76,7 +80,7 @@ class AgreementRetourFormHydrator implements HydratorInterface */ public function hydrate(array $data, $object) { $object->setDateDecision($data['dateDecision'] ? \DateTime::createFromFormat(Constants::DATE_FORMAT, $data['dateDecision']) : null); $object->setDateDecision(DateTimeFromString::run($data['dateDecision'] ?? null); } Loading @@ -90,7 +94,7 @@ class AgreementRetourFormHydrator implements HydratorInterface public function extract($object): array { $data = [ 'dateDecision' => $object->getDateDecision() ? $object->getDateDecision()->format(Constants::DATE_FORMAT) : null, 'dateDecision' => $object->getDateDecision() ? $object->getDateDecision()->format('Y-m-d') : null, ]; return $data; Loading module/Application/src/Form/Intervenant/ContratRetour.php +4 −4 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ namespace Application\Form\Intervenant; use Application\Constants; use Application\Entity\Db\Traits\ContratAwareTrait; use Application\Filter\DateTimeFromString; use Application\Form\AbstractForm; use Laminas\Hydrator\HydratorInterface; use UnicaenApp\Hydrator\Strategy\DateStrategy; Loading @@ -28,10 +29,9 @@ class ContratRetour extends AbstractForm $this->add([ 'name' => 'dateRetourSigne', 'type' => 'DateTime', 'type' => 'Date', 'options' => [ 'label' => "Date de retour $contratToString signé", 'format' => Constants::DATE_FORMAT, ], 'attributes' => [ ], Loading Loading @@ -86,7 +86,7 @@ class ContratRetourFormHydrator implements HydratorInterface */ public function hydrate(array $data, $object) { $object->setDateRetourSigne($data['dateRetourSigne'] ? \DateTime::createFromFormat(Constants::DATE_FORMAT, $data['dateRetourSigne']) : null); $object->setDateRetourSigne(DateTimeFromString::run($data['dateRetourSigne'] ?? null)); return $object; } Loading @@ -101,7 +101,7 @@ class ContratRetourFormHydrator implements HydratorInterface public function extract($object): array { $data = [ 'dateRetourSigne' => $object->getDateRetourSigne() ? $object->getDateRetourSigne()->format(Constants::DATE_FORMAT) : null, 'dateRetourSigne' => $object->getDateRetourSigne(), ]; return $data; Loading module/Application/src/Form/Intervenant/Dossier/DossierIdentiteComplementaireFieldset.php +2 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ class DossierIdentiteComplementaireFieldset extends AbstractFieldset static private $franceId; public function init() { /** Loading Loading @@ -137,6 +138,7 @@ class DossierIdentiteComplementaireFieldset extends AbstractFieldset } /** * Should return an array specification compatible with * {@link Laminas\InputFilter\Factory::createInputFilter()}. Loading Loading
code/test3.php +54 −0 Original line number Diff line number Diff line Loading @@ -7,3 +7,57 @@ * @var $viewName string * @var $viewFile string */ $form = new \Laminas\Form\Form(); $form->add([ 'type' => 'Date', 'name' => 'd1', 'options' => [ 'label' => 'Date de début', ], 'attributes' => [ 'step' => '1', ], ]); $form->add([ 'type' => 'DateTime', 'name' => 'd2', 'options' => [ 'label' => 'Date de début', ], 'attributes' => [ 'step' => '60', ], ]); $form->add([ 'name' => 'submit', 'type' => 'Submit', 'attributes' => [ 'value' => 'Enregistrer', 'class' => 'btn btn-primary', ], ]); //$form->inpu var_dump($_POST); if (isset($_POST['d1'])) { $d1 = \Application\Filter\DateTimeFromString::run($_POST['d1']); var_dump($d1); } if (isset($_POST['d2'])) { $d2 = \Application\Filter\DateTimeFromString::run($_POST['d2']); var_dump($d2); } $form->get('d1')->setValue($d1?->format('Y-m-d\TH:i')); $form->get('d2')->setValue($d2?->format('Y-m-d\TH:i')); echo $this->form($form); No newline at end of file
module/Application/src/Filter/DateTimeFromString.php 0 → 100644 +50 −0 Original line number Diff line number Diff line <?php namespace Application\Filter; use Laminas\Filter\AbstractFilter; class DateTimeFromString extends AbstractFilter { private static $instance; public function filter($value) { if ($value === '') return null; return $this->convert($value); } protected function convert($value): ?\DateTime { if (!$value) return null; $datetime = null; if (strlen($value) == 10) { $value .= "T00:00:00"; } elseif (strlen($value) == 16) { $value .= ":00"; } $datetime = \DateTime::createFromFormat('Y-m-d\TH:i:s', $value); if ($datetime instanceof \DateTime) return $datetime; return null; } public static function run($value) { if (!self::$instance) { self::$instance = new self; } return self::$instance->filter($value); } } No newline at end of file
module/Application/src/Form/Agrement/Saisie.php +8 −4 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Application\Form\Agrement; use Application\Constants; use Application\Filter\DateTimeFromString; use Application\Form\AbstractForm; use Laminas\Form\Element\Csrf; use Laminas\Hydrator\ClassMethodsHydrator; Loading @@ -25,10 +26,9 @@ class Saisie extends AbstractForm $this->add([ 'name' => 'dateDecision', 'type' => 'DateTime', 'type' => 'Date', 'options' => [ 'label' => "Date de la décision", 'format' => Constants::DATE_FORMAT, ], 'attributes' => [ 'id' => uniqid('dateDecision'), Loading Loading @@ -67,6 +67,10 @@ class Saisie extends AbstractForm } } class AgreementRetourFormHydrator implements HydratorInterface { Loading @@ -76,7 +80,7 @@ class AgreementRetourFormHydrator implements HydratorInterface */ public function hydrate(array $data, $object) { $object->setDateDecision($data['dateDecision'] ? \DateTime::createFromFormat(Constants::DATE_FORMAT, $data['dateDecision']) : null); $object->setDateDecision(DateTimeFromString::run($data['dateDecision'] ?? null); } Loading @@ -90,7 +94,7 @@ class AgreementRetourFormHydrator implements HydratorInterface public function extract($object): array { $data = [ 'dateDecision' => $object->getDateDecision() ? $object->getDateDecision()->format(Constants::DATE_FORMAT) : null, 'dateDecision' => $object->getDateDecision() ? $object->getDateDecision()->format('Y-m-d') : null, ]; return $data; Loading
module/Application/src/Form/Intervenant/ContratRetour.php +4 −4 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ namespace Application\Form\Intervenant; use Application\Constants; use Application\Entity\Db\Traits\ContratAwareTrait; use Application\Filter\DateTimeFromString; use Application\Form\AbstractForm; use Laminas\Hydrator\HydratorInterface; use UnicaenApp\Hydrator\Strategy\DateStrategy; Loading @@ -28,10 +29,9 @@ class ContratRetour extends AbstractForm $this->add([ 'name' => 'dateRetourSigne', 'type' => 'DateTime', 'type' => 'Date', 'options' => [ 'label' => "Date de retour $contratToString signé", 'format' => Constants::DATE_FORMAT, ], 'attributes' => [ ], Loading Loading @@ -86,7 +86,7 @@ class ContratRetourFormHydrator implements HydratorInterface */ public function hydrate(array $data, $object) { $object->setDateRetourSigne($data['dateRetourSigne'] ? \DateTime::createFromFormat(Constants::DATE_FORMAT, $data['dateRetourSigne']) : null); $object->setDateRetourSigne(DateTimeFromString::run($data['dateRetourSigne'] ?? null)); return $object; } Loading @@ -101,7 +101,7 @@ class ContratRetourFormHydrator implements HydratorInterface public function extract($object): array { $data = [ 'dateRetourSigne' => $object->getDateRetourSigne() ? $object->getDateRetourSigne()->format(Constants::DATE_FORMAT) : null, 'dateRetourSigne' => $object->getDateRetourSigne(), ]; return $data; Loading
module/Application/src/Form/Intervenant/Dossier/DossierIdentiteComplementaireFieldset.php +2 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ class DossierIdentiteComplementaireFieldset extends AbstractFieldset static private $franceId; public function init() { /** Loading Loading @@ -137,6 +138,7 @@ class DossierIdentiteComplementaireFieldset extends AbstractFieldset } /** * Should return an array specification compatible with * {@link Laminas\InputFilter\Factory::createInputFilter()}. Loading