102 if (isset(
$regles[
'obligatoire']) &&
$regles[
'obligatoire'] && empty($valeur)) {
103 $this->messagesErreurs[] =
"Le champ $champ est obligatoire.";
108 if (empty($valeur) && (!isset(
$regles[
'obligatoire']) || !
$regles[
'obligatoire'])) {
113 foreach (
$regles as $regle => $parametre) {
116 if ($parametre ===
'string' && !is_string($valeur)) {
117 $this->messagesErreurs[] =
"Le champ $champ doit être une chaîne de caractères.";
119 } elseif ($parametre ===
'integer' && !filter_var($valeur, FILTER_VALIDATE_INT)) {
120 $this->messagesErreurs[] =
"Le champ $champ doit être un nombre entier.";
122 } elseif ($parametre ===
'numeric' && !is_numeric($valeur)) {
123 $this->messagesErreurs[] =
"Le champ $champ doit être une valeur numérique.";
128 if (strlen($valeur) < $parametre) {
129 $this->messagesErreurs[] =
"Le champ $champ doit comporter au moins $parametre caractères.";
134 if (strlen($valeur) > $parametre) {
135 $this->messagesErreurs[] =
"Le champ $champ ne doit pas dépasser $parametre caractères.";
139 case 'longueur_exacte':
140 if (strlen($valeur) !== $parametre) {
141 $this->messagesErreurs[] =
"Le champ $champ doit comporter exactement $parametre caractères.";
146 if (is_string($parametre) && !preg_match($parametre, $valeur)) {
147 $this->messagesErreurs[] =
"Le format du champ $champ est invalide.";
149 } elseif ($parametre === FILTER_VALIDATE_EMAIL && !filter_var($valeur, FILTER_VALIDATE_EMAIL)) {
150 $this->messagesErreurs[] =
"L'adresse email est invalide.";
152 } elseif ($parametre === FILTER_VALIDATE_URL && !filter_var($valeur, FILTER_VALIDATE_URL)) {
153 $this->messagesErreurs[] =
"L'URL du site web est invalide.";
158 if ($valeur < $parametre) {
159 $this->messagesErreurs[] =
"La valeur de $champ doit être au minimum $parametre.";
164 if ($valeur > $parametre) {
165 $this->messagesErreurs[] =
"La valeur de $champ ne doit pas dépasser $parametre.";
169 case 'mot_de_passe_fort':
170 if ($parametre && !preg_match(self::PASSWORD_STRONG_REGEX, $valeur)) {
171 $this->messagesErreurs[] =
"Le mot de passe doit contenir au moins 8 caractères, une majuscule, un chiffre et un symbole.";
175 case 'pseudo_format':
176 if ($parametre && !preg_match(self::PSEUDO_REGEX, $valeur)) {
177 $this->messagesErreurs[] =
"Le champ $champ ne doit contenir que des lettres, des chiffres et des underscores, sans espaces.";
183 $birthDate = \DateTime::createFromFormat(
'Y-m-d', $valeur);
185 $aujourdhui = new \DateTimeImmutable();
186 $dateMinimum = $aujourdhui->modify(
"-{$parametre} years");
187 if ($birthDate > $dateMinimum) {
188 $this->messagesErreurs[] =
"Vous devez avoir au moins $parametre ans.";
192 $this->messagesErreurs[] =
"La date de naissance fournie est invalide.";