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 :

Formulaire avec sous formulaires dynamiques [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 127
    Points : 52
    Points
    52
    Par défaut Formulaire avec sous formulaires dynamiques
    Bonjour

    J'ai en faite un cas un peu particulier, je dispose d'une table catégorie qui doit être multilingue.

    Chaque catégorie a des spécificités particulières, j'ai donc créé une table category recensant ces informations, une table lang contenant les langues et enfin une table categorylang recensant les informations concernant les langues.

    Pour des raisons de commodité, je voudrais que l'ajout d'une catégorie permette dans le même temps l'ajout des noms pour chaque langue.

    Pour l'instant je n'ai pas trouvé comment faire sous symfony2, apparemment il faudrait utiliser les forms imbriqués, mais je ne vois pas comment faire dans mon cas car je dois d'abord boucler sur la table lang pour construire le formulaire (et cela ne semble pas possible dans un formulaire car on a pas accès à l'entity manager).

    Donc la question est comment réaliser un formulaire dynamique à partir de données des entitées ?

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Bonjour.

    Perso j'ai eu du mal à imbriquer des formulaires, j'ai l'impression qu'il y a pas mal de solutions. J'ai fait du bricolage et ca a fonctionné. J'attends d'avoir un peu plus d'expérience sur Symfony2 pour sûrement revenir dessus plus tard.

    En ce qui concerne les champs dynamiques, si j'ai bien compris, je pense que tu peux utiliser les Type. Et en fonction de tes requêtes dans le controlleur, tu peux modifier le Type à ton gré, avant de le définir sur le formulaire.
    Je ne sais pas vraiment si je me fais comprendre...

    Bon courage !

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    Bonjour

    Désole je n'ai pas vraiment compris la solution avec les Type.

    En faite j'ai déjà des formulaires générés par la commande generate:crud qui sont donc CategoryType et CategoryLangType

    Le probleme c'est que l'algo que je dois faire dans CategoryType serait du type
    pour chaque langue -> genérer un formulaire CategoryLangType avec le language et la catégorie précisé

    En revanche je n'ai aucune idée de comment le faire...

    Lorsque j'essaye d'ajouter un champ au builder de CategoryType il me rétorque que ce champ n'existe pas dans l'entity Category

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Je ne suis pas sûr de vraiment comprendre alors.

    Mais en tout cas, si tu veux rajouter des champs à ton formulaire, sans que ces champs soient liés à ton Entity (qui elle est liée au formulaire), tu peux utiliser l'option : "property_class" => false

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $builder->add('label', null, array('label'=>'Titre','property_class'=>false));
    Je ne sais pas si ca peut vraiment t'aider.

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    Ca m'aurait aidé en partie, mais ton code ne marche pas ^^"

    J'obtiens un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    The option "property_class" does not exist
    (symfony 2.0.0)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Pour rajouter des champs non liés à ton entity, il faut déjà rajouter en haut de ton fichier XForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    use MyApp\NomBundle\Form\YForm;
    où YForm correspond aux champs à rajouter.

    Ensuite, rajoute ceci dans la fonction buildForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $builder->add('', 'entity', array(
                'class' => 'MyApp\NomBundle\Entity\Y',
                'property' => 'z',
                'multiple' => false,
                'required' =>true,
                'label' => "z",
            ));
    où z est un attribut de ton entity (ex : libelle, nom, ...).

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    J'ai trouvé finalement une solution à mon cas très particulier

    pour avoir un champ de formulaire non lié à une entité, il faut rajoute l'option :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'property_path' => false
    et ensuite gérer manuellement ce champ en ajoutant sa valeur à l'entité avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $entity->setChamp($form['monchamp']->getData())
    de même que la valeur du formulaire lors de l'édition avec la aussi une autre option du champ de formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'data' => $previousData

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/05/2015, 12h24
  2. Réponses: 8
    Dernier message: 04/10/2006, 14h39
  3. Réponses: 10
    Dernier message: 16/08/2006, 11h11
  4. Réponses: 19
    Dernier message: 26/01/2006, 08h44
  5. Réponses: 6
    Dernier message: 19/05/2005, 11h06

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