表单收集中的孩子未提交

时间:2018-09-17 16:21:50

标签: symfony

我有一个带有收集字段的表格。当我提交父母表格时,未提交在收集字段中添加的孩子。

以下是探查器所说的:

enter image description here

“请求/响应”标签:

enter image description here

我在creneaux集合中添加了一个孩子,但是正如您所看到的,creneaux中没有任何孩子提交。 我在提交的表单中没有任何错误。

我找不到我弄错的地方。

父母表格:

class MiseEnLigneFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('nom', TextType::class, ['label' => 'Titre'])

                ->add('tempsEpreuve', TimeType::class,
                                              ['label' => 'Durée',
                                                    'label_attr' => ['class' => 'active'],
                                                    'required' => true,
                                                    'widget' => 'single_text'])

                ->add('creneaux', CollectionType::class,
                                                ['label' => false,
                                                      'label_attr' => ['class' => 'active'],
                                                      'entry_type' => CreneauFormType::class,
                                                      'allow_add' => true,
                                                      'allow_delete' => true,
                                                      'by_reference' => false
                ])
            ->add('polycopies', CollectionType::class,
                ['label' => false,
                    'label_attr' => ['class' => 'active'],
                    'entry_type' => PolycopieFormType::class,
                    'allow_add' => true,
                    'allow_delete' => true,
                    'by_reference' => false
                ]);
    }

子窗体:

class CreneauFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('dateDebut', DateTimeType::class, ['label' =>'Début',
                                                     'label_attr' => ['class'=>'active'],
                                                     'format' => 'dd-MM-yyyy HH:mm',
                                                     'widget' => 'single_text',
                                                     'attr' => ['data-field'=>'datetime']])

                ->add('dateFin', DateTimeType::class, ['label' => 'Fin',
                                                   'label_attr' => ['class'=>'active'],
                                                   'format' => 'dd-MM-yyyy HH:mm',
                                                   'widget' => 'single_text',
                                                   'attr' => ['data-field'=>'datetime']])

                ->add('test', CheckboxType::class, ['label' => false, 'required' => false]);
    }

控制器:

$originalCreneaux = new ArrayCollection();
foreach ($colle->getCreneaux() as $creneau) {
    $originalCreneaux->add($creneau);
}  

$form = $this->createForm(MiseEnLigneFormType::class, $colle);
$form->handleRequest($request);

if ($form->isSubmitted()) {
        if ($form->isValid()) {
            return $this->render('Creneau/edit.html.twig', ['form'    => $form->createView(),
                                                'colle' => $colle,
                                                'matiereName' => $matiereName]);

        }
    }

嫩枝:

{{ form_start(form) }}
    <div class="card card-content">
       {{ form_widget(form.nom) }}
       {{ form_label(form.nom) }}
       {{ form_widget(form.tempsEpreuve) }}
       {{ form_label(form.tempsEpreuve) }}
    </div>

    <div class="card card-content">
        <table class="polycopies centered"
                   data-prototype="{{ form_widget(form.polycopies.vars.prototype)|e }}">

           <thead>
              <tr>
                <th>Nom</th>
                <th>Supprimer</th>
              </tr>
           </thead>

           <tbody class="poly_body">
              {% for poly in form.polycopies %}
                 <tr>
                   <td>
                       {{ form_widget(poly.nom) }}
                       {{ form_label(poly.nom) }}
                   </td>
                   <td>
                       <a href="" class="delete_poly_link">
                          <i class="material-icons">delete</i>
                       </a>
                   </td>
                </tr>
             {% endfor %}
           </tbody>
        </table>
        <div class="" id="liensAjouterPolycopies">
           <a href="" class="add_poly_link btn-flat" data-tooltip="Ajouter un polycopié">
             <i class="material-icons">add</i>Ajouter un polycopié
           </a>
    </div>

<div class="card card-content">
    <span class="card-title">Créneaux</span>

    <table class="creneaux centered"
           data-prototype="{{ form_widget(form.creneaux.vars.prototype)|e }}">

        <thead>
        <tr>
            <th>Date de début</th>
            <th>Date de fin</th>
            <th>Test</th>
            <th>Supprimer</th>
        </tr>
        </thead>

        <tbody class="creneau_body">
        {% for creneau in form.creneaux %}
            <tr>
                <td class="center-align">
                    {{ form_widget(creneau.dateDebut) }}
                    {{ form_label(creneau.dateDebut) }}
                </td>
                <td class="center-align">
                    {{ form_widget(creneau.dateFin) }}
                    {{ form_label(creneau.dateFin) }}
                </td>
                <td class="center-align">
                    {{ form_widget(creneau.test) }}
                    {{ form_label(creneau.test) }}
                </td>
                <td class="center-align">
                    <a href="" class="delete_creneau_link">
                        <i class="material-icons">delete</i>
                    </a>
                </td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
    {{ form_rest(form) }}
</div>
<button class="btn-large fullwidth" type="submit" value="Sauvegarder">
    <i class="material-icons left">save</i>
        Enregistrer
</button>
{{ form_end(form) }}

<script>
    var collectionHolder = $('table.creneaux');
    var num = $('.creneau_body').children().length + 1;

    jQuery(document).ready(function () {

    $(document).on("click", "a.add_creneau_link", function (e) {
        e.preventDefault();

        addCreneauForm(collectionHolder);
        return false;
    });

    $(document).on("click","a.delete_creneau_link", function () {
        var $this = $(this);

        $this.closest('tr').remove();

        return false;
    });

    function addCreneauForm(collectionHolder) {

        var prototype = collectionHolder.attr('data-prototype');
        var newForm = prototype.replace(/__name__/g, num);
        num += 1;

        $tableau = newForm.split("<div>");
        var form = '';
        for (var i = 1; i < $tableau.length; i++) {
            form += "<td class='center-align'>" + $tableau[i] + "</td>";
        }
        form += "<td class='center-align'><a href='' class='delete_creneau_link'><i class='material-icons'>delete</i></a></td>";

        var $form = $('<tr></tr>').append(form);
        $form.insertAfter('.creneaux tr:last');
    }
</script>

1 个答案:

答案 0 :(得分:0)

提交事件后没有持久性也没有刷新            $entityManager = $this->getDoctrine()->getManager(); $entityManager->persist($creneau); $entityManager->flush(); 您是否意外忘记了?