Ce qui se passe
Le Validator de Symfony compte déjà plus de 80 contraintes. La 8.2 en ajoute trois, chacune pour un besoin qui exigeait jusqu'ici un validateur maison.
EntityExists
Le cas d'école : un DTO d'API ou de formulaire reçoit l'identifiant d'une
entité. Il fallait la charger, tester le résultat et lever une erreur à la main.
EntityExists, apportée par Evgen Yurchenko, fait la recherche et rapporte une
absence comme une violation sur la propriété concernée.
- La recherche porte par défaut sur l'identifiant de l'entité.
- L'option
repositoryMethodappelle une méthode de votre dépôt ; tout retour évalué à vrai — une entité, un nombre,true— vaut existence. nullet la chaîne vide sont jugés valides, comme pour la plupart des contraintes : ajoutezNotBlankquand la valeur est obligatoire.
Cron
Une regex qui contrôle la forme d'une expression accepte 60 * * * * ou
*/0 * * * *, qui n'ont aucun sens. Cron, d'Erfan Momeni (PR #64538), passe
par l'analyseur de dragonmantank/cron-expression — le paquet qu'utilise déjà
le Scheduler pour ses déclencheurs. Il doit donc être installé.
Avec MODE_HASHED, la contrainte accepte aussi les expressions hachées du
Scheduler, comme # # * * *, et les alias du type #daily, qui étalent les
tâches récurrentes dans le temps.
Audio
Symfony 7.4 avait introduit Video ; Audio, de Valmont Pehaut-Pietri et
Nicolas Grekas, en est le pendant. Elle juge le fichier sur ses
caractéristiques réelles — durée, débit, fréquence d'échantillonnage, nombre de
canaux, codec, conteneur — et non sur son seul type MIME et sa taille.
Elle étend File et en reprend toutes les options. mimeTypes vaut audio/*
par défaut et, à la différence de Video, aucun codec ni conteneur n'est imposé
tant que allowedCodecs et allowedContainers restent vides. Dès qu'un
contrôle propre à l'audio est configuré, elle lance ffprobe via le composant
Process : FFmpeg doit être présent sur le serveur, image de conteneur comprise.
Source : New in Symfony 8.2: EntityExists, Cron and Audio Constraints, Symfony, 8 octobre 2026.