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 :

Problème avec les formulaires imbriqués [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de bases de données, développeur PHP & J2E
    Inscrit en
    Décembre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de bases de données, développeur PHP & J2E
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 60
    Points : 69
    Points
    69
    Par défaut Problème avec les formulaires imbriqués
    Salut s'il vous plais j'aimerais implémenter un formulaire imbriqué.
    One To Many .
    Un Bordereau à plusieurs Items (des articles).

    Voici mon formulaire Items:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('article', 'entity', array('required'=>true, 'class'=>'PPPStockBundle:Article'))
                ->add('originOffice', 'entity', array('required'=>true, 'class'=>'PPPCoreBundle:office'))
                ->add('quantity','integer', array('required'=>true)) 
                ->add('startRange','integer') 
                ->add('endRange','integer');
        }
    Voici le formulaire des bordereaux
    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
     
    public function buildForm(FormBuilderInterface $builder, array $options) {
            $builder->add('reference', 'text', array('required'=>true, 'label'=>'bordereau.reference.label.key'))
                    ->add('status', 'text', array('required'=>true, 'label'=>'status.label.key'))
                    ->add('originOffice', 'entity', array('required'=>true, 'class'=>'PPPCoreBundle:office'))
                    ->add('destinationOffice', 'entity', array('required'=>true, 'class'=>'PPPCoreBundle:office'))
                    ->add('sendDate', 'date', array('required'=>true, 'label'=>'send.date.label.key'))
                    ->add('receiveDate', 'date', array('required'=>true, 'label'=>'receive.date.label.key'))
                    ->add('author', 'text', array('required'=>true, 'label'=>'autor.label.key'))
                    ->add('reciever', 'text', array('required'=>true, 'label'=>'receiver.label.key'))                
                    ->add('problem', 'textarea', array('label'=>'status.label.key'))
                    ->add('items', 'collection', array('type'=> new ItemType(),
                                                      'allow_add' => true,
                                                      'allow_delete' => true,
                                                      'prototype' => true,
                                                      'by_reference' => false));
        }
    et voici ma vue
    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
     
    {% extends 'PPPStockBundle::layout.html.twig' %}
     
     
    {% block content %}
     
        {#display flash message if any#}
        {% for flashMessage in app.session.flashbag.get('notice') %}
        <div class="flash-message">
           {{ flashMessage|trans }}
        </div>
        {% endfor %}
        <div><h3><b>New bordereau</b></h3>
        <form action="{{ path('PPP_stcok_register_bordereau') }}" {{ form_enctype(form) }} method="POST" class="col-sm-12">
            {{ form_label(form.destinationOffice) }}                    
            {{ form_widget(form.destinationOffice, {'attr': {'class': 'block-field select-menu'} }) }}
            {{ form_errors(form.destinationOffice) }} 
            <br/>
            <div class='row'>
                <span class="col-sm-3"><b>Bordereau Items </b></span>
                <span class="pull-right"><a id="add-another-item" class="btn" onclick="add()">{{ 'add.article.key' | trans()}}</a></span>
            </div>  
     
            {% macro prototype(item) %}
                <tr>
                    <td></td>
                    <td>
                        {{ form_errors(item.article) }}
                        {{ form_widget(item.article) }}
                    </td>
                    <td>
                        {{ form_errors(item.quantity) }}
                        {{ form_widget(item.quantity) }}
                    </td>
                    <td>
                        {{ form_errors(item.startRange) }} 
                        {{ form_widget(item.startRange) }}
                    </td>
                    <td>
                        {{ form_errors(item.endRange) }} 
                        {{ form_widget(item.endRange) }}
                    </td>
                    <td><a class="remove_item" onclick="remove()">Remove</a></td>
                </tr>
            {% endmacro %}
     
         <table class="content-table col-sm-12" cellspacing="2" id="item_list">
            <caption>{{ form_label(form.items) }}</caption>
            <thead>
                <tr>
                    <th>N°=</th>
                    <th>Article</th>
                    <th>{{'qte.article.key'}}</th>
                    <th>{{'start.range.key'}}</th>
                    <th>{{'end.range.key'}}</th>
                    <th>{{'action.key'}}</th>
                </tr>
            </thead>
                <tbody id="item_list" data-prototype="{{ form_widget(form.items.vars.prototype) | e }}">
                    {% for key, item in form.items %}
                        {{ _self.prototype(item) }}
                    {% endfor %}
                </tbody>
            </table>
     
            <div class="row">
                <span class="col-sm-3 pull-right"><input class="submit-button float-right" id="register-computer-button" type="submit" value="{{ 'register.label.key'|trans }}" /></span>
            </div>    
            {{ form_rest(form) }}
     
        </form> 
        </div>
     
    {% endblock %}
     
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
     <script type='text/javascript' src='{{ asset('js/jquery.js')}}'></script>
     
    <script type="text/javascript">
    function add(){
        var index = $('#item_list tr').length;
        var row = $('script[type="text/html"]').text().replace(/\$\$name\$\$/g, index);    
        $('table tbody').append(row);
        alert("ADD NEW LIGN_"+row);
    };
     
     
    function remove() {
        $(this).closest('tr').remove();
    };
     
    $(document).ready(function() {
        if ($('table tbody tr').length === 0) {
            add();
        }
    }); 
    </script>
    je souhaite créer dans un tableau des lignes d'item. Mais seulement à chaque click pour ajourter une nouvelle ligne rien ne se passe. je n'arrive pas à ajouter de nouvelles lignes dans mon tableau. J'ai besoin de votre aide s'il vous plais.

  2. #2
    Membre du Club
    Homme Profil pro
    Administrateur de bases de données, développeur PHP & J2E
    Inscrit en
    Décembre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de bases de données, développeur PHP & J2E
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2011
    Messages : 60
    Points : 69
    Points
    69
    Par défaut
    J'ai trouver la solution à mon problème. En fait comme j'utilise symfony 2.6 dans ma vue fallait remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type="text/html">
            {{ _self.prototype(form.items.get('prototype')) }} {# don't know if it is the best way to access prototype #}
        </script>
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     <script type="text/html">
            {{ _self.prototype(form.items.vars.prototype) }}
        </script>
    et aussi dans javascript remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var row = $('script[type="text/html"]').text().replace(/\$\$name\$\$/g, index);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var row = $('script[type="text/html"]').text().replace(/__name__/g, index);

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

Discussions similaires

  1. [XHTML] Problèmes avec les formulaires et les liens sur Firefox ( xhtml / css / php )
    Par sibile dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 26/05/2009, 14h50
  2. Réponses: 0
    Dernier message: 12/02/2009, 13h07
  3. [VBA-Excel] Petit problème avec les formulaires
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/08/2006, 09h22
  4. [Système] Problème avec les formulaires
    Par Ludo75 dans le forum Langage
    Réponses: 9
    Dernier message: 02/02/2006, 11h13
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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