我正在学习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中显示表单。
答案 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}
此外: