Symfony - сделать или перенаправить? - PullRequest
0 голосов
/ 26 сентября 2018

Я сделал вызов API с / seat-number / add route, который отображает форму и обновляет базу данных.Но когда я изменяю

return $this->render('@AdminTemplates/pages/seat-number-add.html.twig', array(
        'form' => $form->createView(),
    ));

на

return $this->redirectToRoute('seat_number_list');

, моя кнопка добавления на странице индекса не будет выбрасываться со страницы индекса, чтобы добавить страницу ..

Вот мойвесь вызов API

    public function seatEditAction(Request $request, $id)
{
    $edit = $this->getDoctrine()->getRepository(Seats::class)->find($id);

    $form = $this->createFormBuilder($edit)
        ->add('seatNumber', TextType::class, array('label' => 'Seat Number', 'attr' => ['class' => 'form-control']))
        ->add('save', SubmitType::class, array('label' => 'Update', 'attr' => ['class' => 'btn btn-primary pull-right action-save']))
        ->getForm();

    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->flush();
    }

    return $this->render('@AdminTemplates/pages/seat-number-edit.html.twig', array(
        'form' => $form->createView(),
    ));
}

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Я только что добавил два оператора возврата, и это работает ..

 if ($form->isSubmitted() && $form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->flush();

        return $this->redirectToRoute('seat_number_list');

    }

    return $this->render('@AdminTemplates/pages/seat-number-edit.html.twig', array(
        'form' => $form->createView(),
    ));
0 голосов
/ 26 сентября 2018

Чтобы перенаправить, когда форма была успешно заполнена, вам нужно поместить свой второй оператор return внутри блока if.

Написанное вами действие вызывается дважды в обычном пользовательском потоке:в первый раз она отображает форму, а во второй раз она вызывается при отправке формы, чтобы проверить ее и выполнить любую необходимую логику.Оператор if проверяет, какой из этих двух случаев является текущим и предоставляет разные пути выполнения.Вот почему вам нужно сохранить существующий оператор возврата: его задача - отображать форму при первом посещении (и делать это снова, если проверка не пройдена).

Я также отмечаю, что внутри того же ifзаблокировать вы получили менеджер сущностей, но, по-видимому, не выполняли никакой бизнес-логики.Именно здесь можно было бы ожидать вызова какой-либо службы, которая реализует любую бизнес-операцию, которую необходимо выполнить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...