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 :

[Form] Formulaire imbriqué


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 10
    Points
    10
    Par défaut [Form] Formulaire imbriqué
    bonjour je suis entrain de faire un formulaire imbriqué j'ai en faite une page qui contient un ensemble de groupes

    voila mon Pages.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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    <?php
     
    namespace MyApp\GenerateurBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * Pages
     *
     * @ORM\Table(name="pages")
     * @ORM\Entity
     */
    class Pages
    {
     
        function __construct() {
             $this->listGroups = new \Doctrine\Common\Collections\ArrayCollection();
        }
     
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer", nullable=false)
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="IDENTITY")
         */
        private $id;
     
        /**
         * @var integer
         *
         * @ORM\Column(name="number_page", type="integer", nullable=true)
         */
        private $numberPage;
     
        /**
         * @var \DateTime
         *
         * @ORM\Column(name="modified", type="datetime", nullable=true)
         */
        private $modified;
     
        /**
         * @var \DateTime
         *
         * @ORM\Column(name="created", type="datetime", nullable=true)
         */
        private $created;
     
        /**
         * @var \Surveys
         *
         * @ORM\ManyToOne(targetEntity="Surveys")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="surveys", referencedColumnName="id")
         * })
         */
        private $surveys;
     
        /**
         * @var \Groups
         *
         * @ORM\OneToMany(targetEntity="Groups", mappedBy="pages",cascade="persist")
         */
     
        private $listGroups;
        public function getListGroups() {
            return $this->listGroups;
        }
     
        public function setListGroups(Groups $listGroups) {
            foreach ($listGroups as $groups) {
            $groups->addPages($this);}
     
            $this->listGroups = $listGroups;
        }
     
            public function getId() {
            return $this->id;
        }
     
        public function setId($id) {
            $this->id = $id;
        }
     
        public function getNumberPage() {
            return $this->numberPage;
        }
     
        public function setNumberPage($numberPage) {
            $this->numberPage = $numberPage;
        }
     
        public function getModified() {
            return $this->modified;
        }
     
        public function setModified(DateTime $modified) {
            $this->modified = $modified;
        }
     
        public function getCreated() {
            return $this->created;
        }
     
        public function setCreated(DateTime $created) {
            $this->created = $created;
        }
     
        public function getSurveys() {
            return $this->surveys;
        }
     
        public function setSurveys(Surveys $surveys) {
            $this->surveys = $surveys;
        }
        public function __toString() {
            return "$this->numberPage";
        }
     
     
    }
    mon twig:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    {% extends '::base.html.twig' %}
    {% block body %}
    <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
     
    <form action="{{ path('pages_create') }}" method="POST" {{ form_enctype(form) }}>
     
        <a href="#" Onclik=function(e)>Ajouter un groupe</a>
     
     
        {{ form_widget(form) }}
     
     
        <ul  class="groups" data-prototype="{{ form_widget(form.listgroups.vars.prototype.name)|e }}" >
     
            {% for group in form.listgroups%}
            <li>{{ form_row(group.name) }}</li>
     
     
            <ul  class="questions" data-prototype="{{ form_widget(group.listQuestions.vars.prototype)|e }}" >
                         {% for question in group.listQuestions%}
                    <li>{{ form_widget(question.text) }}</li>
            {% endfor %}
                      {% endfor %}
                    </ul>
                </ul>
     
     
            </form>
            <ul>
     
                <input type="submit" value="create">
            </ul>
     
            <script type="text/javascript">
                var collectionHolder = $('ul.group');
     
                // ajoute un lien « add a group »
                var $addGroupLink = $('<a href="#" class="add_group_link">Ajouter un groupe</a>');
                var $newLinkLi = $('<li></li>').append($addGroupLink);
     
                jQuery(document).ready(function() {
                    // ajoute l'ancre « ajouter un group » et li à la balise ul
                    collectionHolder.append($newLinkLi);
     
                    $addgroupLink.on('click', function(e) {
                        // empêche le lien de créer un « # » dans l'URL
                        e.preventDefault();
     
                        //ajoute un nouveau formulaire group (voir le prochain bloc de code)
                        addgroupForm(collectionHolder, $newLinkLi);
                    });
                });
                function addGroupForm(collectionHolder, $newLinkLi) {
                    // Récupère l'élément ayant l'attribut data-prototype comme expliqué plus tôt
                    var prototype = collectionHolder.attr('data-prototype');
     
                    // Remplace '__name__' dans le HTML du prototype par un nombre basé sur
                    // la longueur de la collection courante
                    var newForm = prototype.replace(/__name__/g, collectionHolder.children().length);
     
                    // Affiche le formulaire dans la page dans un li, avant le lien "ajouter un group"
                    var $newFormLi = $('<li></li>').append(newForm);
                    $newLinkLi.before($newFormLi);
                }
     
                </script>
     
     
    {% endblock %}
    mais si je clique sur le lien Ajouter un groupe j'ai aucune action qui se produit sauf que j'ai un # ajouté à la fin de mon url!!

    merci de m'aider à résoudre ce problème

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Points : 183
    Points
    183
    Par défaut
    salut,

    t'as une erreur js normalement, peux-tu nous la donner ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    non j'ai aucune erreur si je clique sur le lien ajouter groupe rien ne se produit

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Points : 183
    Points
    183
    Par défaut
    Salut,

    Toujours sur ce code ?

    As-tu une erreur dans la console js de ton navigateur ?

Discussions similaires

  1. [2.x] [Form] Validation de formulaire imbriqué
    Par dukoid dans le forum Symfony
    Réponses: 12
    Dernier message: 02/04/2013, 22h36
  2. [2.x] [Form] Formulaire imbriqué avec des uploads
    Par prims dans le forum Symfony
    Réponses: 4
    Dernier message: 14/03/2013, 16h12
  3. Réponses: 7
    Dernier message: 11/03/2013, 22h34
  4. [Debutant] VBA EXCEL form comboliste imbriquée
    Par megapacman dans le forum Access
    Réponses: 4
    Dernier message: 10/03/2006, 10h27
  5. formulaire imbriqué
    Par jani dans le forum Langage
    Réponses: 9
    Dernier message: 18/01/2006, 15h40

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