MissingOptionsException:缺少必需的选项“class”

时间:2015-03-09 22:18:04

标签: symfony

尝试在表单中使用实体字段类型时出现上述错误。

我使用的是Symfony 2.6.0。

我的班级有一个类别字段,定义为:

/**
     * @ORM\ManyToOne(targetEntity="Category", inversedBy="parent")
     * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
     */
    protected $category;

类别类定义为:

/**
 * @ORM\OneToMany(targetEntity="Parent", mappedBy="category")
 */
protected $parents;

我的表单类型定义了类别:

->add('category', 'entity', array(
                'class' => 'AppBundle:Category',
                'property' => 'name'

在我的控制器中,我用它来调用它:

->add('category', 'entity') 

堆栈跟踪如下:

Symfony\Component\OptionsResolver\Exception\MissingOptionsException: The required option "class" is missing.
at n/a
    in \project\vendor\symfony\symfony\src\Symfony\Component\OptionsResolver\OptionsResolver.php line 757

at Symfony\Component\OptionsResolver\OptionsResolver->resolve(array())
    in \project\vendor\symfony\symfony\src\Symfony\Component\Form\ResolvedFormType.php line 109

at Symfony\Component\Form\ResolvedFormType->createBuilder(object(FormFactory), 'category', array())
    in \project\vendor\symfony\symfony\src\Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeDataCollectorProxy.php line 82

at Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeDataCollectorProxy->createBuilder(object(FormFactory), 'category', array())
    in \project\vendor\symfony\symfony\src\Symfony\Component\Form\FormFactory.php line 87

at Symfony\Component\Form\FormFactory->createNamedBuilder('category', 'entity', null, array())
    in \project\vendor\symfony\symfony\src\Symfony\Component\Form\FormBuilder.php line 106

at Symfony\Component\Form\FormBuilder->create('category', 'entity', array())
    in \project\vendor\symfony\symfony\src\Symfony\Component\Form\FormBuilder.php line 268

at Symfony\Component\Form\FormBuilder->resolveChildren()
    in \project\vendor\symfony\symfony\src\Symfony\Component\Form\FormBuilder.php line 216

at Symfony\Component\Form\FormBuilder->getForm()
    in \project\src\AppBundle\Controller\TheController.php line 78

at AppBundle\Controller\TheController->editAction('30', object(Request))
    in  line 

at call_user_func_array(array(object(TheController), 'editAction'), array('30', object(Request)))
    in \project\app\bootstrap.php.cache line 3008

at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), '1')
    in \project\app\bootstrap.php.cache line 2970

at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), '1', true)
    in \project\app\bootstrap.php.cache line 3119

at Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel->handle(object(Request), '1', true)
    in \project\app\bootstrap.php.cache line 2364

at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
    in \project\web\app_dev.php line 28

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

看起来您已经创建了一个表单类,但是在控制器中重新创建表单而不是使用表单类。

  

在我的控制器中,我称之为:   ->add('category', 'entity')

您应该使用与表单类相同的classproperty选项,或者更好,使用控制器中的表单类而不是重新创建表单。

$this->createForm(new ParentType(), $parent);

相关问题