Forms 没有类的Symfony2表单

Forms 没有类的Symfony2表单,forms,symfony,Forms,Symfony,我正在遵循这一点,我所要做的就是制作一个简单的表单。我有定制的自举Symfony2组件,基本上我使用的几乎所有东西都没有FrameworkBundle,所以我有如下代码: $defaultData = array('message' => 'Type your message here'); $form = Forms::createFormFactory()->createBuilder($defaultData) ->add('name', '

我正在遵循这一点,我所要做的就是制作一个简单的表单。我有定制的自举Symfony2组件,基本上我使用的几乎所有东西都没有FrameworkBundle,所以我有如下代码:

$defaultData = array('message' => 'Type your message here');
       $form = Forms::createFormFactory()->createBuilder($defaultData)
        ->add('name', 'text')
        ->add('email', 'email')
        ->add('message', 'textarea')
        ->add('send', 'submit')
        ->getForm();
您可以看到唯一的区别是我如何获取formfactory实例。 我认为这是一个错误:

未捕获异常 “Symfony\Component\Form\Exception\UnexpectedTypeException”与 消息“”应为字符串类型的参数, Symfony\Component\Form\ResolvedFormTypeInterface或 Symfony\Component\Form\FormTypeInterface,数组在中给定


你知道我做错了什么吗?谢谢

您没有按照所述学习教程。希望知道您在第一个参数中创建的表单类型,而不是默认选项。在此上下文中,默认选项用于第二个参数。您可以在控制器API文档中看到差异

您应该在教程中使用createFormBuilder帮助器方法,因为它代表您在内部将正确的参数传递给createBuilder方法:

$defaultData = array('message' => 'Type your message here');
       $form = $this->createFormBuilder($defaultData)
        ->add('name', 'text')
        ->add('email', 'email')
        ->add('message', 'textarea')
        ->add('send', 'submit')
        ->getForm();
或者,如果你坚持按自己的方式做,这样的事情应该会奏效:

// ...
$form = Forms::createFormFactory()->createBuilder('form', $defaultData)
// ...

如果您正在学习本教程,为什么要使用Forms::createFormFactory->createBuilder$defaultData而不是$this->createFormBuilder$defaultData?我阅读本教程是为了了解这一点,正如我所说,我正在自定义增强组件。但是,如果您读取控制器,该方法将执行以下操作:$this->container->get'form.factory'->createBuilder'form',$data,$options,它基本上是调用表单工厂服务,我相信这将等同于Forms::createFormFactory,然后它调用createBuilder检查我的代码,这样我就看不出区别在哪里了。建议从这里开始:这里讨论独立组件。让示例开始工作,然后可能添加一些内容。传递给Symfony\Component\Form\Extension\Core\Type\FormType::setDefaultOptions的参数1必须是Symfony\Component\options Resolver\options Resolver\options Resolver的实例,Symfony\Component\options Resolver\options Resolver的实例,显然我已经尝试过了,而且它不起作用