我在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')
)
但这会在表单中显示整个实体。我只希望显示其他实体中的一个字段,并在带有选项
的下拉列表中显示答案 0 :(得分:0)
您没有提供所需的选项class
。
修改强>
此外,您有两个语法问题(" ; "缺少)
$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}}