4

我正在学习 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()));

}
}

我的路由文件如下。路由.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 %}

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

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

4

2 回答 2

6

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

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

你可以这样离开

public function newAction(Request $request)

或有

public function newAction()

并像这样访问请求对象

$request  = $this->getRequest();
于 2013-02-22T07:56:47.000 回答
1

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

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

还:

  1. 以这种方式覆盖请求可能是一个坏主意
  2. 您似乎没有对控制器中的请求做任何事情
于 2013-02-22T07:57:09.277 回答