<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\Extension\Core\Type\DateType;
class DateTypeSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
FormEvents::PRE_SUBMIT => 'preSubmit',
];
}
public function preSubmit(FormEvent $event): void
{
$data = $event->getData();
if (is_array($data)) {
foreach ($data as $key => $value) {
$formConfig = $event->getForm()->get($key)->getConfig();
if ($formConfig->getType()->getInnerType() instanceof DateType) {
$data[$key] = $this->formatDate($value);
}
}
$event->setData($data);
}
}
/**
* convert from dd/mm/yyyy to yyyy-mm-dd
*/
private function formatDate($inputDate): string
{
$parts = explode('/', $inputDate);
return $parts[2] . '-' . $parts[1] . '-' . $parts[0];
}
}