Symfony2表单构建器添加实体'无法加载类型实体'

时间:2015-07-13 13:45:15

标签: php forms symfony

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

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';
    }
}
  

无法加载类型“entity”500内部服务器错误 -   InvalidArgumentException

“我的”实体有一个列,它使用外键约束引用“其他”的id。我希望我的表单基本上在“我的”表单中有一个下拉列表,它使用Other.id显示“其他”实体中“名称”列的所有值 - > My.other_id作为参考。

更新

我有一个OtherType(表单类型),以下内容可以使用:

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

但这会在表单中显示整个实体。我只希望显示其他实体中的一个字段,并在带有选项

的下拉列表中显示

3 个答案:

答案 0 :(得分:0)

您没有提供所需的选项class

正如entity Field Type

的文档中所述

修改

此外,您有两个语法问题(" ; "缺少)

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

答案 1 :(得分:0)

使用基本用法library (CommentRemover on GitHub)

中定义的必需$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'
    ));
}

答案 2 :(得分:0)

您需要添加以下内容:

data_class

并在以下行中将class更改为 $builder->add('other', 'entity', array( 'data_class' => 'My\App\DefaultBundle\Entity\Other' ));

{{1}}