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:
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 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'); }
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 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)); }
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.
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>
Partager