IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Création d'une checkbox dans un formulaire imbriqué


Sujet :

Symfony PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut Création d'une checkbox dans un formulaire imbriqué
    Bonsoir,

    Je pensais que je pourrais faire cette manipulation sans problème mais j'ai un message d'erreur lorsque j'ajout le champ 'checkbox' dans mon "RoleType"

    Message d'erreur: Expected argument of type "Boolean", "string" given

    Je veux lister tous les "Roles" au moment de la registration d'un "User", ce que je fais déjà actuellement, mais sous forme d'input, ce qui n'est pas très adapté... Voici comment je m'y prends:

    UserType.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    class UserType extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
                ->add('login')
                ->add('password')
                ->add('salt')
                ->add('prenom')
                ->add('nom')
                ->add('email')
                ->add('userRoles', 'collection', array
                    (
                        'type' => new RoleType,
                        'prototype' => true,
                        'allow_add' => true,
                        'allow_delete' => true
                    ))
            ;
        }
    RoleType.php (dans lequel j'ai ajouté le champ checkbox qui me cause le message d'erreur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class RoleType extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
                ->add('name', 'checkbox')
     
            ;
        }
    Merci !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Si tu veux choisir parmi une liste de role, utilise plutôt le type "choice"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $builder->add( 'userRoles', 'choice', array(
                                                        'expanded'=>true,//affiche des checkbox plutot qu'un select
                                                        'multiple'=>true,
                                                        'choices'=>$listOfRoles)//soit $listOfRoles la liste des roles disponibles
    si tu as une table de role utilise un champ "entity"

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    J'ai effectivement une table User et une table Role, j'ai cherché le champ "entity" dont tu me parle ici mais je ne l'ai pas trouvé.

    Merci !

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 135
    Points : 153
    Points
    153
    Par défaut
    LOL! tu es dans la partie Constraints....

    liste des types que tu peux mettre dans ton Form :

    http://symfony.com/doc/current/refer...rms/types.html

    Type : Entity
    http://symfony.com/doc/current/refer...es/entity.html

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut
    Bonsoir,

    Merci pour ces précieux liens !

    J'ai testé la chose suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            ->add('userRoles', 'entity', array
                    (
                        'class' => 'PersoUserBundle:Role',
                        'multiple' => true,
                        'expanded' => true
                    ));
    et j'obtiens cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Entities passed to the choice field must have a "__toString()" method defined (or you can also override the "property" option).
    Pour résumer, mon entité User contient un ArrayCollection d'entités Role.

    J'ai ce getter qui me permet de les récupérer dans mon entité User.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function getRoles()
        {
            return $this->getUserRoles()->toArray();
        }

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut
    Bonsoir, je me permets un petit up.

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 135
    Points : 153
    Points
    153
    Par défaut
    t'embête pas! rajoute la propriété property et tu met le nom du champ que tu veux afficher!

    c'est a dire si dans ta classe Role si tu veux afficher le champ libelle tu fais
    'property'=>'libelle'

Discussions similaires

  1. [1.x] checked une checkBox dans un formulaire edit
    Par ctek59 dans le forum Symfony
    Réponses: 1
    Dernier message: 05/11/2011, 11h19
  2. [1.x] Filtrage d'une liste checkbox dans un formulaire symfony
    Par saberwer dans le forum Symfony
    Réponses: 2
    Dernier message: 27/08/2010, 13h33
  3. [Struts] - Déclenchement d'une action dans un formulaire imbriqué
    Par Dabat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 19/03/2009, 15h14
  4. Réponses: 0
    Dernier message: 19/03/2009, 14h44
  5. [MySQL] Une histoire de CHECKBOX dans un formulaire
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/10/2006, 14h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo