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 入力は "Test" に設定する必要がありますが、これは機能せず、空白のままです。Parent.xyz 入力はデフォルト値を取りますが...

どうしたの?

4

1 に答える 1

1

@cheesemacfly と回答したように、フォームを作成する前に子を初期化する必要があります。そのため、次の 2 つの方法があります。

  1. フォームを作成するコントローラーで、子を初期化し、フォームに渡します。

    ...
    $parent = new Parent();
    $parent->setChild(new Child());
    $deceasedForm = $this->createForm(new ParentType(), $parent);
    ...
    
  2. 親コンストラクターで子を初期化します

    public function __construct()
    {
        ....
        $this->child = new Child();
        ....
    }
    
于 2013-06-27T18:29:10.920 に答える