Symfony2表单类ContextErrorException

时间:2014-06-08 16:10:50

标签: symfony symfony-forms

我有一个扩展AbstractType的表单类。我的代码如下......

  1. 获取FormBuilder并创建一个

    $formFactory = $this->container->get('form.factory');
    $builder = $formFactory->createBuilder('form', new MyEntity(), array());
    
  2. 调用FormBuilder的create()方法

     $form = $builder->create(new MyType());
    
  3. 我做错了什么?错误如下......

         ContextErrorException: Warning: array_key_exists(): The first argument should be either a string or an integer in C:\xampp\htdocs\icooicoo\vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\ClassMetadata.php line 289
    

    此外,文档说我应该将$task变量传递给create()方法,该方法是Task实体对象,但该方法必须接受FormTypeInterface变量。

1 个答案:

答案 0 :(得分:0)

首先,如果您已经拥有FormType,则无需创建表单构建器。您可以按如下方式调用它:

$formFactory = $this->container->get('form.factory');
$form = $formFactory->create( new MyType(), new MyEntity() );

上述问题可能会解决您的错误的第二个问题。如果它不是,那么它必须与某些验证标记相关。请粘贴与验证相关的Entity Annotation(如果您使用此方法),或粘贴您用于验证的YML文件。或者您认为与验证有关的任何其他内容。

代码中的错误说明

  • CreateBuilder中的第一个参数是$ data(实体,$ task等)
  • 在调用$builder->create时,第一个参数是表单的类型,第二个是底层的$ data