Le bundle symfony-precognition permet de valider une requête HTTP sans exécuter le code du contrôleur, offrant ainsi une validation de formulaire en temps réel. L'idée principale est de conserver les règles de validation côté serveur, au lieu de les dupliquer côté client, évitant ainsi les incohérences entre les deux implémentations.
Pour ce faire, une requête normale est enrichie d'un en-tête Precognition: true. Le serveur analyse et valide les arguments du contrôleur, mais s'arrête avant l'exécution du code principal. Aucune modification n'est effectuée sur les données ou le système, le client reçoit uniquement un retour sur la validité potentielle de la requête.
Il est possible de limiter les validations retournées à des champs spécifiques grâce à l'en-tête Precognition-Validate-Only, utile pour ne signaler des erreurs que lorsque l'utilisateur a terminé de saisir un champ particulier.