在 symfony 4 中以一种形式进行不同的操作

making different action in a form in symfony 4

我正在尝试使用预订系统制作一个 symfony 表格,用户在我的第一个表格中选择门票数量,然后如果他选择一张或两张门票,他将被重定向到不同的路线。

这是我的控制器:

public function home(Request $request, )
{
    $form = $this->createFormBuilder()
                 ->add('numberOfTickets', ChoiceType::class, [
                     'attr' => [
                         'class' => 'form-control'
                     ],
                     'choices' => [
                         '1' => 1,
                         '2' => 2,
                         '3' => 3,
                         '4' => 4,
                         '5' => 5,
                     ]
                 ])

                 ->setAction($this->generateUrl('ticket'))                     ->getForm();

请问如何根据表单中的选择执行不同的操作?

您必须扩展您的控制器。使路由可用于 GET 和 POST 请求。

public function home(Request $request, )
{
    $form = $this->createFormBuilder()
                 ->add('numberOfTickets', ChoiceType::class, [
                     'attr' => [
                         'class' => 'form-control'
                     ],
                     'choices' => [
                         '1' => 1,
                         '2' => 2,
                         '3' => 3,
                         '4' => 4,
                         '5' => 5,
                     ]
                 ])

                 ->setAction($this->generateUrl('ticket'))->getForm();

    $form->handleRequest($request);

    if($form->isSubmitted() && $form->isValid()){
         $formData = $form->getData();
         switch($formData['numberOfTickets']){
             case 1:
                   return $this->redirectToRoute('routeForOneTicket');
    }

}

return $this->render('template', ['form' => $form->createView()]);

不是很漂亮,但这是一种方式。我不知道你的应用程序,但花一些时间学习表格 类 是否明智:https://symfony.com/doc/current/forms.html#creating-form-classes.