symfony2表单未显示

时间:2013-02-22 06:08:53

标签: symfony symfony-2.1 symfony-2.2

我正在学习symfony2,我在控制器中创建了一个表格,如下所示。 控制器文件为DefaultController.php

namespace Banner\TestBundle\Controller;

use Banner\TestBundle\Entity\Contact;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Banner\TestBundle\Entity\Task;
use Symfony\Components\HttpFoundation\Request;

class DefaultController extends Controller
{
public function newAction(Request $request)
{

 echo "The controller is called ";
 $task = new Task();
 $task->setTask("Write a blog Post ");
 $task->setDueDate(new DateTime('tomorrow'));

 $form =  $this->createFormBuilder($task)
            ->add('task','text  ')
            ->add('duedate','date')
            ->getForm();
    return $this->render('BannerTestBundle:default:zoo.html.twig',array('form'=>$form->createView()));

}
}

我的路由文件如下。 routing.yml中

task_new:
pattern:  /task/{request}
defaults: { _controller: BannerTestBundle:Default:new}

并且zoo.html.twig文件如下所示。

{% extends '::page.html.twig' %}
    {% block title %}The Zoo{% endblock %}

    {% block content %}

        <form action="{{ path('task_new') }}" method="post" {{ form_enctype(form) }}>
                {{ form_widget(form) }}
            <input type="submit">   
        </form> 

    {% endblock %}

当我在我的网址中传递“task / GET”时,它会显示“请求不存在”。错误500'。

我基本上想要做的是当我传递url时,将调用zoo.html.twig。我想在zoo.html.twig中显示表单。

2 个答案:

答案 0 :(得分:6)

您无需将$request传递给您的操作,也无需将其放入路线中。请求对象在全局上下文中可用。所以

task_new:
    pattern:  /task-new
    defaults: { _controller: BannerTestBundle:Default:new}

你可以这样离开

public function newAction(Request $request)

或有

public function newAction()

并像这样访问请求对象

$request  = $this->getRequest();

答案 1 :(得分:1)

您的路由文件未正确缩进,因此yaml无法正确解析。尝试:

task_new:
    pattern:  /task/{request}
    defaults: { _controller: BannerTestBundle:Default:new}

此外:

  1. 以这种方式覆盖请求可能是一个坏主意
  2. 您似乎没有在控制器中执行任何操作