处理渲染控制器中的表单

时间:2015-02-26 14:06:50

标签: php symfony

我有一个页面,其中列出了一些任务,并且有一个表单来添加任务。 我想处理表单是控制器中的另一个操作,但所有的东西都在一个页面中。所以我在模板中渲染一个动作。

我的控制器:

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模板呈现的。

我该怎么做? 谢谢!

1 个答案:

答案 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')