10
votes

Pourquoi ma contrainte de symfony2 @unquentité ne fonctionne-t-elle pas du tout?

J'ai la classe d'entité suivante dans mon application:

@UniqueEntity("email")
@UniqueEntity("username")


0 commentaires

4 Réponses :


2
votes

Essayez d'ajouter xxx

à la configuration de votre application


0 commentaires

25
votes

Le problème a été résolu comme suit:

@UniqueEntity(fields={"email"}, groups={"registration"})
@UniqueEntity(fields={"username"}, groups={"registration"})


3 commentaires

Bonjour, Josef, semble un peu une vieille question, mais je reçois le même problème que vous l'aviez - je vous demandais - avez-vous besoin de, je ne sais pas, créer que le groupe de validation quelque part? J'ai ajouté le champ d'entité unique exactement comme vous l'avez fait, uniquement sur le courrier électronique et le téléphone portable, mais cela me donne toujours une exception au lieu d'une erreur de validation. Des idées?


@ilikebreakfast Vous devez déclarer le groupe de validation de votre setDefaultOptions dans votre FormType


Pourquoi cette solution est-elle différente de ce qui est indiqué sur la documentation? La documentation ne va pas, ou cette implémentation est-elle significativement différente de l'exemple de la documentation? Symfony. COM / DOC / 2.3 / Référence / Contraintes / Uniqueti Ty.HTML



14
votes

Une autre raison de ce problème est que si vous utilisez des collections de formulaire et que vous incluez une sous-formulaire qui gère une entité associée, vous devez définir cascade_validation sur vrai dans le Racine et toutes les sous-formes.

Voir l'indice dans le Documentation Symfony :

Pour activer la validation sur catégorieType, ajoutez l'option cascade_validation à TaskType : xxx

update:

Pour que vos entités enfants soient validées, il y a même une meilleure façon. Symfony fournit la contrainte valide pour exactement cette raison. De Documentation :

valide
Cette contrainte est utilisée pour activer la validation sur des objets incorporés comme des propriétés sur un objet validé. Cela vous permet de valider un objet et tous les sous-objets associés à celui-ci.


0 commentaires

4
votes

Veuillez noter Ignorenull

par exemple pour fonctionner correctement avec PID (peut être null): P>

constraints:
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
  fields: [page, pid, position]
  errorPath: page
  groups: [Menu]
  message: "Page already exists with that parent"
  ignoreNull: false


1 commentaires

C'était la réponse de mon problème. Merci!