Bonjour,
J'ai un formulaire dans lequel j'aimerais bien avoir un champ texte tout simple dans lequel l'utilisateur peut entrer une liste d'utilisateurs séparés par des virgules (et où on s'en fout des espaces). Ce sera les destinataires d'un message privé. P.ex. "Alice, Bob, Cedric, David"
Comment est-ce que je peux faire ça ?
Je pourrais utiliser un simple TextFieldType, mais alors ensuite comment faire pour la validation (vérifier que tous les utilisateurs saisis existent) ? Pour faire la validation, je pourrais ajouter une méthode avec une assertion IsTrue dans ma classe. Mais je n'ai pas accès à Doctrine dans cette classe et ce n'est probablement pas très réglo d'en passer une instance depuis le contrôleur (une entité avec une référence à doctrine ? assez moche non ? Le repository ? pas beaucoup mieux, si ?) ET faire une validation à la mano dans le contrôleur après la validation Symfony, c'est aussi assez bof…
D'un autre côté, FOSUserBundle est fourni avec un UserType qu'on peut utiliser pour entrer un simple utilisateur. Je pourrais faire un tableau de cet UserType en utilisant un CollectionType. C'est sûrement une meilleure voie. Mais du coup ça va m'afficher autant de zones de texte qu'il n'y a d'utilisateur et je ne vois vraiment pas comment je pourrais aller contre ça. Il y a peut-être moyen de bidouiller un template quelque part, mais par quel moyen faire un preg_split de la chaîne saisie pour la transformer en tableau de chaînes et ensuite en tableau d'instances après ?
Voilà où mes réflexions ont abouti pour le moment, malheureusement ce n'est pas grand chose. J'imagine que je vais devoir me résoudre à ne pas implémenter cette fonction.
Merci pour vos réponses.