表单生成器添加实体'无法加载实体'


Symfony2 Form builder add entity 'Could not load type entity'

我在Symfony中创建了一个扩展抽象类型的表单类型,并使用构建器添加了字段,但无论我做什么,它都不会工作!

class MyType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name', 'text');
        $builder->add('other', 'entity', array(
            'data_class' => 'My'App'DefaultBundle'Entity'Other'
        ));
    }
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'runSpeeds' => 'My'App'DefaultBundle'Entity'My',
        ));
    }
    public function getName()
    {
        return 'my';
    }
}

无法加载"实体"类型500内部服务器错误-InvalidArgumentException

"My" Entity有一个列,该列使用外键约束引用"Other"的id。我希望我的表单基本上有一个下拉的形式为"我的",显示所有的值从"名称"列在"其他"实体使用其他。id -> My。

我有一个OtherType(表单类型),以下将工作:

$builder>add('name', new OtherType(), array(
    'data_class' => 'My'App'DefaultBundle'Entity'Other')
)

但是这会在表单中显示整个实体。我只希望显示Other实体中的一个字段,并在选择

的下拉框中显示。

您没有提供所需的选项class

如实体字段类型

文档中所述编辑:

还有两个语法问题(缺少";")

$builder->add('name', 'text')
$builder->add('other', 'entity', array(
    'data_class' => 'My'App'DefaultBundle'Entity'Other'
))

使用所需的class属性,如基本用法中定义的http://symfony.com/doc/current/reference/forms/types/entity.html#basic-usage

$builder->add('other', 'entity', array(
    'class' => 'DefaultBundle:Other'
))

如果你的Other类实现了__toString()方法,你可以用它来确定标签。你也可以使用property:

$builder->add('other', 'entity', array(
    'class' => 'DefaultBundle:Other',
    'property' => 'name',
))

你需要添加这个:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'My'App'DefaultBundle'Entity'My'
    ));
}

并将data_class更改为class:

    $builder->add('other', 'entity', array(
        'data_class' => 'My'App'DefaultBundle'Entity'Other'
    ));