我有一个页面,其中列出了一些任务,并且有一个表单来添加任务。 我想处理表单是控制器中的另一个操作,但所有的东西都在一个页面中。所以我在模板中渲染一个动作。
我的控制器:
public function indexAction(Request $request)
{
return $this->render("MathieuTestBundle:Default:index.html.twig");
}
public function addAction(Request $request) {
$task = new Task();
$form = $this->createFormBuilder($task)
->add("task", "text")
->add("expiration", "date", array("format" => "ddMMyy"))
->add("save", "submit")
->getForm();
return $this->render("MathieuTestBundle:Default:add.html.twig", array(
"form" => $form->createView()
));
}
有我的index.html.twig模板:
<h1>Tasks:</h1>
<ul>
<li>Wash the dog</li>
<li>Do homework</li>
<li>Learn Symfony</li>
</ul>
{{render(controller("MathieuTestBundle:Default:add"))}}
我的add.html.twig模板:
{{form(form)}}
实际上我使用我的模板add.html.twig来处理表单和index.html.twig模板来列出我的所有任务。
问题是我无法处理表单,因为执行该操作的操作是由index.html.twig模板呈现的。
我该怎么做? 谢谢!
答案 0 :(得分:3)
查看文档:http://symfony.com/doc/current/book/forms.html#changing-the-action-and-method-of-a-form
只需将setAction
添加到表单构建器。
从文档中提取:
$form = $this->createFormBuilder($task)
->setAction($this->generateUrl('target_route')) // <--- HERE
->setMethod('GET')