使用Symfony2,我无法设置嵌入表单的默认值。
这是我的基本表格(家长):
...
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
...
->add('child', new ChildType());
...
}
...
这是我的嵌入表格(儿童):
...
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
...
->add('name');
...
}
...
这是我的嵌入式实体(儿童):
...
class Child
{
private $name;
public function __construct()
{
$this->name = 'Test';
}
}
...
这是使用父实体创建表单的控制器代码:
...
$parent = new Parent();
$deceasedForm = $this->createForm(new ParentType(), $parent);
...
如您所见,Child.name输入应设置为" Test",但这不起作用,它保持空白。而Parent.xyz输入确实采用默认值...
出了什么问题?
答案 0 :(得分:1)
正如@cheesemacfly回答的那样,孩子必须在创建表单之前进行初始化。 所以有两种方法可以做到:
在您创建表单的控制器中,初始化一个Child并将其提供给您的表单:
...
$parent = new Parent();
$parent->setChild(new Child());
$deceasedForm = $this->createForm(new ParentType(), $parent);
...
在您的Parent构造函数中初始化Child
public function __construct()
{
....
$this->child = new Child();
....
}