将表单提交给Symfony中的另一个控制器

时间:2017-01-28 19:02:21

标签: php forms symfony design-patterns

我有一个页面index.html.twig在提交时包含Form此表单,经过验证并且结果显示在页面success.html.twig中。现在我有了一个新的要求,其中页面success.html.twig本身包含一个Form,该Form应包含index.html.twig表单传递的值,如果用户想要新表单,还应允许用户执行直接从success.twig.html搜索。该要求的灵感来自hostel world

问题

  1. 是否有可用于实施解决方案的设计模式
  2. 我目前的想法是为success.html.twig创建一个新动作并将表单提交给thatAction,而不是从success.html.twig的动作中呈现index.html.twig。这是对的吗?我该如何实施呢?
  3. 代码(部分)

     /**
     * @Route("/", name="homepage")
     */
    public function indexAction(Request $request)
    {
        $event = new Event();
        $form = $this->createForm(MyForm::class, $event);
        $form->handleRequest($request);
    
        if($form->isSubmitted() && $form->isValid()) {
            $event->setPlace($form["place"]->getData());
    
    
            $event->setDate($form["date"]->getData()->modify('+12 hours'));
            return $this->render('default/frontend/success.html.twig',
                array('events' => $events, 'cityName' => $cityName, 'cityImage' => $cityImage)
            );
        }
    
        return $this->render('default/frontend/index.html.twig', array('form' => $form->createView()));
    }
    

1 个答案:

答案 0 :(得分:0)

有两个不同的操作是有意义的 - 至少对于不同的请求类型(GET,POST等)。

只有一件事是建议:$ form-> isValid()已经有一个isSubmitted() - 检查内部。因此无需检查是否已提交。