subYears(18); if ($this->isSqlDate($value)) { $d = Date::createFromFormat('Y-m-d', $value); if (! $d?->lessThanOrEqualTo($majorityLimit)) { $fail('Vous devez ĂȘtre majeur pour vous inscrire.'); } } elseif ($this->isFormDate($value)) { $d = Date::createFromFormat('d/m/Y', $value); if (! $d?->lessThanOrEqualTo($majorityLimit)) { $fail('Vous devez ĂȘtre majeur pour vous inscrire.'); } } else { $fail('Erreur sur le champs : date de naissance.'); } } /** * Check if provided string is formatted for mysql */ private function isSqlDate(string $date): bool { if (preg_match('/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/', $date)) { return true; } return false; } /** * Check if provided string is formatted DD/MM/AAAA */ private function isFormDate(string $date): bool { if (preg_match("/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-9]{4}$/", $date)) { return true; } return false; } }