我有一个扩展AbstractType的表单类。我的代码如下......
获取FormBuilder并创建一个
$formFactory = $this->container->get('form.factory');
$builder = $formFactory->createBuilder('form', new MyEntity(), array());
调用FormBuilder的create()
方法
$form = $builder->create(new MyType());
我做错了什么?错误如下......
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变量。
答案 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