Question

Je voudrais afficher un message d'erreur dans le champ, il est pour. Je sais comment mettre le message d'erreur dans le champ, mais je veux trouver un moyen dynamique pour vérifier après re-submittion, si la valeur insérée n'est pas le message d'erreur lui-même. J'utilise des annotations de doctrine. Par exemple, si le champ est « title », le message d'erreur serait « Le titre doit être rempli! ». Ainsi, le champ titre est plus, je vide cliquez sur soumettre à nouveau, et il est maintenant valide. Je ne veux pas vérifier chaque champ unique comme if $entity->getTitle() == "The title must be filled" ... J'ai réussi à le faire avec divs d'erreur non affichés dans la branche, et jquery, mais je veux savoir s'il y a une meilleure façon de le faire à partir du contrôleur? Merci

Était-ce utile?

La solution

Vous vous demandez comment faire quelque chose correctement dans le mauvais sens ... Si la valeur d'entrée est la valeur que vous voulez traité, il aurait jamais été la valeur pour commencer. Cela étant dit, je suis sûr que vous avez vos raisons ...

Vous devez écouter FormEvents::BIND_CLIENT_DATA et effacer les données du formulaire si elle correspond à votre chaîne d'erreur.

public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('title');
    $builder->get('title')->addEventListener(
        FormEvents::BIND_CLIENT_DATA,
        function(FilterDataEvent $event)
        {
            if ('The title must be filled' == $event->getData()) {
                $event->setData('');
            }
        },
    );

Si vous voulez appliquer ce comportement globalement vous devez attacher cet écouteur à l'aide d'un formulaire type d'extension qui s'étend 'field'. Vous devrez également introspect tous les messages d'erreur de validation possibles pour le champ actuel à l'aide du validateur et les transmettre par le traducteur, puis comparer les résultats avec les données d'événement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top