Symfony встроенный редактор редактирования не работает - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь получить форму редактирования в модальном режиме, но эта форма редактирования не работает в контексте.

Это работает, когда я пробую форму непосредственно на веб-странице, используя адрес URI, но это не так, когда я пробую ее в контексте моей страницы.Я собираюсь объяснить больше ...

На моей веб-странице у меня есть render controller:

    <div class="card">
        <div class="body">
            {{ render(controller('AppBundle:Classeur3:vacation', {'request':app.request , 'id': zone.id})) }}
        </div>
    </div>

Этот контроллер извлекает объекты SOMME и отображает таблицу следующим образом:

<table id="sites-list" class="table table-bordered datatable">
    <thead>
        <tr>
            <th>Employé</th>
            <th>Heure d'entrée</th>
            <th>Heure de sortie</th>
            <th>Durée</th>
            <th>Actions</th>
        </tr>
    </thead>
    <tbody>
        {% for v in vacations %}
            <tr id="tr-vacation-{{ v.id }}">
                <td>{{ v.user }}</td>
                <td>{{ v.entryTime|date }}</td>
                <td>{{ v.exitTime|date }}</td>
                <td>{{ v.totalTime }}</td>
                <td style="width: 150px;">
                    <button onclick="$('#modal').modal({remote: '{{ path('edit_vacation', {'id': v.id}) }}' });" type="button" class="btn btn-circle waves-effect waves-circle waves-float" style="margin-right: 5px;">
                        <i class="material-icons">search</i>
                    </button>
                </td>
            </tr>
        {% endfor %}
    </tbody>
</table>

Мой edit_vacation ресурс определяется по следующему маршруту:

edit_vacation:
    path:     /vacation/{id}/edit
    defaults: { _controller: AppBundle:Classeur3:editVacation }

Это моя функция контроллера:

public function editVacationAction(Request $request, $id){

    $vacation       = $this->getDoctrine()->getRepository(Answ31Vacation::class)->find($id);
    $form           = $this->createForm(Answ31VacationType::class, $vacation);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {

        $entityManager = $this->getDoctrine()->getManager();
        $entityManager->persist($vacation);
        $entityManager->flush();

        //Message
        $this->addFlash('success', 'Vacation mise à jours');

        //Redirect to Zone edit page
        return $this->redirectToRoute('zone_edit', array('id' => $vacation->getZone()->getId()));
    }

    return $this->render('AppBundle:Classeur3:edit_vacation.html.twig', array(
        "form" => $form->createView()
    ));
}

А вот мой взгляд:

    <div class="modal-body">
        <div class="row">
            <div class="col-sm-12">
                {{ form(form) }}
            </div>
        </div> 
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-link waves-effect" data-dismiss="modal">Fermer</button>
    </div>

Модал отлично отображается, но когда я отправляю форму, страница перезагружается как плановая, но данные не обновляются.Когда я пытаюсь позвонить напрямую через URL моего ресурса (baseurl / holiday / 1 / edit), у меня есть форма, и изменения работают, когда я нажимаю кнопку отправки, данные обновляются.

Есть мысли?

1 Ответ

0 голосов
/ 01 июня 2018

В вашем editVacationAction вы должны попытаться установить целевое действие вашей формы, например,

$form = $this->createForm(Answ31VacationType::class, $vacation, ["action"=>$this->generateUrl('edit_vacation']);

Но когда вы отправите заявку, страница изменится, и вы потеряете модальное пространство без какого-либо дополнительного JavaScript.

...