<?php
namespace App\Form\Adherent;
use DateInterval;
use DateTime;
use Symfony\Component\Form\Extension\Core\Type\BirthdayType;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\GreaterThanOrEqual;
use Symfony\Component\Validator\Constraints\LessThanOrEqual;
use Symfony\Component\Validator\Constraints\NotBlank;
class BirthDateType extends BirthdayType
{
public const MIN_AGE = 3;
public function configureOptions(OptionsResolver $resolver): void
{
parent::configureOptions($resolver);
$resolver->setDefaults([
'label' => 'Date de naissance',
'input' => 'datetime_immutable',
'required' => true,
'years' => array_combine(
range(2022, 1930),
range(2022, 1930),
),
'placeholder' => [
'year' => 'Année', 'month' => 'Mois', 'day' => 'Jour',
],
'constraints' => [
new NotBlank(),
new GreaterThanOrEqual(
value: '1930-01-01',
message: 'Votre date de naissance doit être supérieure au 01/01/1930'
),
new LessThanOrEqual(
value: (new DateTime())->sub(new DateInterval('P'.($age = self::MIN_AGE).'Y'))->format('Y-09-01'),
message: 'L\'adhérent doit être âgé d\'au moins '.$age.' ans au 1er septembre de l\'année en cours',
),
],
]);
}
}