【发布时间】:2017-01-28 19:02:20
【问题描述】:
我有一个页面index.html.twig,其中包含一个Form 提交时,此表单经过验证,结果显示在页面success.html.twig 中。现在我有一个新要求,其中页面success.html.twig 本身包含一个表单,该表单应包含表单从index.html.twig 传递的值,如果用户想要新表单还应允许用户直接从@ 进行搜索987654327@。该要求的灵感来自hostel world。
问题:
- 是否有可以用来实现解决方案的设计模式
- 我目前的想法是为
success.html.twig创建一个新的Action,并将表单提交给thatAction,而不是从index.html.twig的Action 中渲染success.html.twig。这是正确的吗?如何实施?
代码(部分):
/**
* @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()));
}
【问题讨论】:
-
我认为为成功创建一个新动作是正确的。在创建表单时,您可以试试这个:
$form =$this->createForm(new Event(), $event);。所以你用你从indexAction收到的值填充你的新表单
标签: php forms symfony design-patterns