- Ymox,
Bonjour à tous !
J'ai un comportement un peu ennuyeux que j'aimerais vous soumettre.
Histoire d'alléger un peu le nombre de requêtes dans mes pages, j'ai passé sur un grand nombre de mes entités pour créer des méthodes findBy
et autres (oui, je parle de redéfinition desdites méthodes) qui permettent de récupérer mes entités et leurs objets liés de manière "invisible", tout en conservant à peu de choses près le comportement initial. Justement, c'est le "à peu de choses près" qui pose désormais problème.
J'ai eu besoin de mettre des contraintes d'unicité pour éviter certains doublons. Or, cette contrainte prend en paramètre le nom de la propriété à vérifier, puis utilise la méthode findBy
pour savoir si la valeur soumise est déjà présente en base. Or, ma "nouvelle" méthode findBy
doit absolument prendre les alias d'objets comme préfixes des propriétés à filtrer (vu que je fais des jointures). Mais si je spécifie ce préfixe dans la contrainte, le champ n'est plus reconnu par la contrainte. Si je ne le spécifie pas, c'est lors de la transformation du DQL en SQL que le champ n'est plus reconnu…
Est-ce que quelqu'un verrait une alternative au renommage de mes méthodes ?
Merci d'avance
Edit
Ouais, en fait, c'est simple : je regarde déjà si j'ai un alias ou non pour traiter les paramètres et leurs placeholders, donc s'il n'y en a pas, je l'ajoute, c'est normalement celui de "l'entité principale"
Edit 2
Ah, en revanche, surprise ! Je n'ai de message d'erreur que si un des deux champs n'est pas valide, mais le message s'affiche pour les deux champs ou pour aucun…
1 2 3 4 5 6 7 8 | My\WonderfulBundle\Entity\Person: constraints: - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: fields: emailCanonical errorPath: email - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: fields: usernameCanonical errorPath: username |
Extrait de mon fichier validation.yml
Donc si je tente de saisir un e-mail qui existe déjà, j'ai l'erreur pour les deux champs email
et username
, alors que si je tente de saisir un nom d'utilisateur déjà enregistré, aucune erreur ne s'affiche — alors que les outils de Symfony me signalent bien une erreur pour le champ username
…
Edit 3
Apparemment, avec Symfony 3.1.6, ce souci d'affichage est réglé.