如何在 Sonata 管理员显示视图中嵌入子实体


How to embed child entities in sonata admin show views?

我正在使用symfony2和sonata admin bundle。现在我有一个与另一个实体具有一对一关联的实体。我希望将子实体的显示窗体嵌入到父实体的显示窗体中。

我已经尝试了表单类型"sonata_type_admin",但这只给了我一个指向子实体的链接。

有没有人知道如何嵌入子实体的显示表单?

实体定义:

父母:

class Parent
{
    /**
     * @ORM'OneToOne(targetEntity="Child", mappedBy="parent")
     */
    private $child;
}

孩子:

class Child
{
    /**
     * @ORM'OneToOne(targetEntity="Parent", mappedBy="child")
     * @ORM'JoinColumns({
     *   @ORM'JoinColumn(name="parent_id", referencedColumnName="id")
     * })
     */
    private $parent;
}

由于父实体中有一个引用子实体的属性,因此可以在 configureShowFields 方法中调用子字段以显示子实体中的字段

protected function configureShowFields(ShowMapper $showMapper)
{
    $showMapper
        ->with('Child Fields', array('collapsed' => true))
        ->add('child.propertyName',null,array('label'=>'Label'))
        ->add('child.anotherPropertyName',null,array('label'=>'Label'))
        ... ;
}