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 :

probleme d'affichage de collection dans un formulaire


Sujet :

Symfony PHP

  1. #1
    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 probleme d'affichage de collection dans un formulaire
    bonjour,

    Voilà j'ai deux classes : Telephone et User et j'ai une relation OneToMany entre user et telephone (un telephone est associé à un seul user et un user peut avoir plusieurs telephone). Lors de l'inscription je demande à l'utilisateur de mettre son téléphone, j'ai donc créer une classe UserForm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class UserForm extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
     
     
        	$builder->add('prenom');
        	$builder->add('nom');
            $builder->add('telephones','collection');
        }
    }
    Le problème étant que le telephone est de type CollectionArray et donc il n'est pas possible de mettre un champ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $builder->add('telephones','text');
    enfin si mais il m'affiche un text "Doctrine\Common\Collections\ArrayCollection@000000000942ab4700000000653aed23" directement dans l'input. Donc j'aurai aimé avoir des renseignements sur le type collection pour un formulaire et de savoir s'il était possible de paramétré le type collection pour qu'il affiche un input. Ceci ce passe lors de l'inscription donc l'objet telephones est vide au début.

    Cordialement.

  2. #2
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Salut,

    Tu dois creer un TelephoneForm pour pouvoir l'inclure dans ton UserForm. Je t'invite a relire la doc a ce sujet : http://symfony.com/doc/current/book/...ction-of-forms

  3. #3
    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
    Ah oui! Merci ! Pourtant je suis passer devant plusieurs fois... lol
    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
    re, j'ai suivi ce qui était marqué sur le site mais il m'affiche pas l'input.

    dans UserForm j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $builder->add('telephones','collection',array('type' => new TelephonesForm() ));
    et ma classe TelephonesForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     public function buildForm(FormBuilder $builder, array $options)
        {
     
        	$builder->add('telephone', 'text');
     
        }

    et dans mon template j'ai mis Il m'affiche Telephones mais avec aucun champ...
    Quelqu'un a une idée?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Responsable applications intranet
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable applications intranet
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Pff, j'ai loupé qqch

    Slt,

    A mon avis t'as du louper un truc dans la doc:

    1. Tu crées ton formulaire User
    2. Tu crées ton formulaire TéléphoneType
    3. Tu importes le formulaire TéléphoneType dans le formulaire User :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    $builder->add('telephones', new TelephoneType());
    // Tout simplement
    http://symfony.com/doc/current/book/...embedded-forms

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par rafleboss Voir le message
    Il m'affiche Telephones mais avec aucun champ...
    Quelqu'un a une idée?
    J'ai le même problème avec une relation ManytoOne entre des images et un produit. As-tu trouvé une sollution?

  7. #7
    Membre éclairé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 70
    Points : 681
    Points
    681
    Par défaut
    De même je suis intéresse pour le Many to One dans la form.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 80
    Points
    80
    Par défaut
    Salut tout le monde,

    Ce n'est pas très clair, contribuez si vous le voulez mais voici un lien qui vous aidera peut être, n'hésitez pas à demander de l'aide: http://wiki.nekland.fr/index.php/For..._avec_Symfony2

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 28
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par Nek.dev Voir le message
    Salut tout le monde,

    Ce n'est pas très clair, contribuez si vous le voulez mais voici un lien qui vous aidera peut être, n'hésitez pas à demander de l'aide: http://wiki.nekland.fr/index.php/For..._avec_Symfony2
    Merci j'ai trouvé la solution grâce à ton lien. En fait J'avais oublié d'ajouter un nouvel objet à ma collection. Ce qui correspond dans le lien que tu as donné à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $article = new Article();
            // On ajoute un nouveau tag à cet article, celui-ci vide sera demandé dans le formulaire avec l'article !
            $article->getTags()->add(new Tag());
    Sans la ligne $article->getTags()->add(new Tag()); sf2 n'affiche pas le formulaire parceque pour lui on n'a instancié aucun objet et il n'y a donc pas d'objet à ajouter à la collection.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Responsable applications intranet
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable applications intranet
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Merci pour ton lien sur le wiki Nek.dev, j'y ai passé la journée également avec ce de collections.

    J'y étais parvenu via jQuery mais ca me faisait raler un peu de devoir dévier vers du JS, mes applications devant fonctionner avec ou sans js.

  11. #11
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Tu auras toujours besoin d'un peu de JS : comment ton utilisateur fait pour ajouter 15 tags d'un coup ? Pour en ajouter 0 ? Pour en supprimer ?

  12. #12
    Membre à l'essai
    Homme Profil pro
    Responsable applications intranet
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable applications intranet
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Là où j'en ai besoin pour l'instant, je dois avoir un nombre fixe et il y a encore qqch de tordu en plus. J'ai pas encore essayé dans le controleur mais je vous tiens au courant.

    Edit: J'ai pas eu le temps de détailler mon truc tordu avant d'arriver au boulot : j'expliques...

    J'ai un ResultReport qui a une relation manyTomany avec Result. Quand j'affiche une formulaire de rapport de résultat, je choisis un critère et une section et mon formulaire ne doit m'afficher que les personnes appartenant à cette section (Result est en relation avec la personne). Je sais pas si c'est clair pour vous??

    Et pour aller plus loin, si il y a déjà eu les points pour le même critère et la même personne, cela doit venir dans mon formulaire pour le modifier, pfioou

    Si il y a une meilleure solution, je vous écoute

  13. #13
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Pour s'en sortir au niveau de la suppression, une solution serait de mettre une checkbox. Si la checkbox est cochée, on valide et update l'entité, si non on la supprime de la collection.

    En fait le champ collection de base est vraiment mal foutu.

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/11/2014, 18h54
  2. [AC-2010] Probleme affichage d'enregistrement dans un formulaire
    Par azur123 dans le forum IHM
    Réponses: 14
    Dernier message: 23/08/2012, 18h59
  3. Réponses: 3
    Dernier message: 19/11/2009, 15h43
  4. Probleme d'affichage d'image dans une fenetre
    Par cgregueusse dans le forum MFC
    Réponses: 1
    Dernier message: 03/08/2005, 12h08
  5. []Problème d'affichage des enregistrements dans un DataReport
    Par GeniuZ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 05/01/2005, 17h52

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