我不太确定我的标题是否足够丰富。如果有任何具有编辑权限的人想在阅读之后调整它,请随意。
我需要创建一个表单类型,它可以镜像我当前的父< - >子,我与我的实体之间的1对1关系。现在,从文档判断,我可以指定子实体的唯一方法是使用Entity
表单类型,但这似乎没有给我我想要的。我不想选择可以添加到父级的现有实体。我需要能够填写父级的字段,然后可选地填写子级的字段,所有这些都以相同的形式填写。理想情况下,我可以做类似的事情:
$builder->add('child', 'entity', array(
'required' => false,
'class' => 'MyBundle\Entity\Child',
'type' => 'MyBundle\Form\Type\ChildType'
)
);
但是,从我所看到的情况来看,type
选项仅存在于集合中,这也不是我正在处理的内容。
有什么建议吗?
答案 0 :(得分:1)
我不确定我是否明白了你的意思,但这应该有效:
$builder->add('child', 'child_type');
http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html
<强>更新强>
class AddressType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('city','text');
$builder->add('country','country');
}
public function getName()
{
return 'my_address_form';
}
}
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name','text');
$builder->add('address','my_address_form');
//Or if you don't want to defined the child form as a service you can use
//$builder->add('address', new AddressType());
}
public function getName()
{
return 'my_user_form';
}
}
如果您需要将AddressType
定义为服务:
services:
acme_demo.form.type.address:
class: Acme\DemoBundle\Form\Type\AddressType
tags:
- { name: form.type, alias: my_address_type }