从公司创建新品牌:在 SonatAdminBundle 的 admin 中嵌入 admin

Create new brand from company: embed admin in admin in SonatAdminBundle

我将这两个表(见下图)映射如下:

class Brand
{
    ...

    /**
     * @var Company
     *
     * @ORM\ManyToOne(targetEntity="Company")
     * @ORM\JoinColumn(name="companies_id", referencedColumnName="id")
     */
    protected $company;

}

class Company
{
    ...  
}

我有两个管理员 类:CompanyAdminBrandAdmin。我需要添加对添加新品牌的支持 - 创建一个新品牌而不是 link 现有品牌 - 来自公司管理员,但我不知道如何实现这一点。思路是:

我正在阅读 sonata docs嵌入其他管理员 部分尚未准备好。任何人都可以帮助我完成这项工作吗?我卡住了

我没有完全理解你的要求,但据我了解:

创建/select/从品牌中删除公司

class BrandAdmin extends Admin
{
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper->add('company', 'sonata_type_model_list', array(
            'by_reference' => false
        ));
    }
}

文档:https://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/form_field_definition.html#advanced-usage-many-to-one

以公司形式添加新品牌

class CompanyAdmin extends Admin
{
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper->add('brands', 'sonata_type_collection',
                array(
                    'label' => false,
                    'by_reference' => false
                ),
                array(
                    'edit' => 'inline',
                    'inline' => 'table'
                )
            );
    }
}

创建新品牌时显示的字段将基于 BrandAdmin 的 configureFormFields。

文档:https://sonata-project.org/bundles/admin/master/doc/reference/form_types.html#sonata-type-collection