助手"动作"没有定义

时间:2015-02-16 09:31:28

标签: symfony

我是Symfony2框架的新手,我的项目出错了。

我遇到的错误是:助手"动作"没有定义。我创建了一个控制器函数,在函数中我添加了一些用于构建表单的代码和渲染函数以通过模板呈现它。

现在我试图通过在索引页面中包含表单模板来在我的index.html.php页面中显示表单,但是我正在显示:帮助程序" action"没有定义。

public function formAction(Request $request)
{
    // $task = new Task();
    // $task->setTask('Write a blog post');
    // $task->setDueDate(new \DateTime('tomorrow'));
    $form = $this->createFormBuilder($task)->add('task', 'text')->add('dueDate', 'date')->add(
        'save',
        'submit',
        array('label' => 'Create Task')
    )->getForm();

    return $this->render('HarriseqBundle:Main:login-form.html.php', array('form' => $form->createView()));
}

2 个答案:

答案 0 :(得分:0)

您在login-form.html.php中遇到问题。因为print $view['action']->render(new \Symfony\Component\HttpKernel\Controller\ControllerReference('HarriseqBundle:Mai‌​n:form'));代码不正确。请使用本教程创建表单http://symfony.com/doc/current/book/forms.html

答案 1 :(得分:0)

错误不是进入控制器的操作,而是进入表单渲染

echo $view['action']

是完成你想要做的事情的正确方法

echo $view['form']

确实

所以,基本上,编辑你的代码(HarriseqBundle:Main:login-form.html.php)如下

<?php echo $view['form']->start($form) ?>
<?php echo $view['form']->widget($form) ?>
<?php echo $view['form']->end($form) ?>

<?php 
  echo $view['form']->start($form);
  echo $view['form']->widget($form);
  echo $view['form']->end($form);

startwidget,结束methods做什么?

start()方法将呈现表单对象的起始标记<form>(所以基本上你可以传递一些参数,比如提交方法)

end()方法将呈现结束标记</form>

widget()将呈现表单的所有元素(如果应用于整个表单),或者,如果指定表单元素作为参数,则仅呈现该元素

另请参阅rest()方法