0

使用 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 输入应设置为“测试”,但这不起作用,它保持空白。而 Parent.xyz 输入确实采用默认值...

怎么了?

4

1 回答 1

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();
        ....
    }
    
于 2013-06-27T18:29:10.920 回答