2015-03-09 1 views
0

Je souhaite utiliser des messages d'erreur personnalisés pour les contraintes de validation sur des dizaines de champs de mon projet.Messages de contrainte de validateur Symfony2 personnalisés

Je ne veux pas mettre le message sur chacun d'entre eux, car ce serait une violation flagrante de DRY. Répéter la même chaîne dans chaque déclaration comme: @NotNull(message="custom msg") signifierait que si je décide de changer le message dans le futur, je devrais les chasser tous les remplacer, mais pire encore, je pourrais utiliser la mauvaise chaîne sur certains d'entre eux et être inconsistant.

Comment gérez-vous cela?

Est-ce que la meilleure option est vraiment d'étendre chaque contrainte de stock de symfony et d'y définir ma valeur par défaut, et d'utiliser ma propre classe d'annotations personnalisées?

Veuillez noter que l'utilisation du traducteur n'est pas une option pour moi, donc je cherche une solution qui n'inclut pas le composant de traduction symfony.

Merci beaucoup pour l'aide à l'avance.

Répondre

0

En supposant que vous utilisez l'anglais comme langue de l'application et que vous avez configuré translator: { fallback: en }, vous pouvez remplacer ces messages de contrainte de manière universelle. Commencez par créer ce fichier: app/Resources/translations/validators.en.yml

Et utiliser le format de traduction suivante:

This value should not be blank.: Your custom message here 
Whatever the standard message is.: Another custom message 

Cela fonctionne également pour tout autre paramètre de langue, en supposant que vous avez fait une validators.lang.yml pour elle!

Vous pouvez également placer ce fichier dans votre répertoire de regroupement sous Resources/translations, et à quelques autres endroits.

Vous pouvez read more about this here!

+0

Je pourrais le faire mais je veux éviter d'utiliser le traducteur (j'ai ma propre traduction pour ce projet). Je n'ai pas activé le traducteur. Je suis fondamentalement à la recherche d'une solution sans avoir besoin de faire une traduction 1-1 dans un fichier YAML. –

+0

@ChrisTickner Désolé, c'est votre "meilleure option". C'est aussi l'option recommandée par les docs de Symfony, comme je l'ai mentionné. Sinon, vous devez étendre chaque contrainte de stock, mais ce n'est pas très sec. – sjagr

+0

Merci pour l'aide. Ce sera probablement la seule option en dehors de les étendre. J'ai changé ma question initiale après cet article pour refléter ma situation que j'aurais dû ajouter à l'origine. Merci encore! –