设置Symfony embeddend表单输入的默认值

时间:2013-06-27 16:26:45

标签: forms symfony default-value

使用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输入确实采用默认值...

出了什么问题?

1 个答案:

答案 0 :(得分:1)

正如@cheesemacfly回答的那样,孩子必须在创建表单之前进行初始化。 所以有两种方法可以做到:

  1. 在您创建表单的控制器中,初始化一个Child并将其提供给您的表单:

    ...
    $parent = new Parent();
    $parent->setChild(new Child());
    $deceasedForm = $this->createForm(new ParentType(), $parent);
    ...
    
  2. 在您的Parent构造函数中初始化Child

    public function __construct()
    {
        ....
        $this->child = new Child();
        ....
    }