从公司创建新品牌:在管理员的SonatAdminBundle中嵌入管理员

时间:2015-06-11 01:38:39

标签: php symfony sonata-admin symfony-sonata symfony-2.6

我将这两张表(见下面的图片)映射如下:

enter image description here

class Brand
{
    ...

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

}

class Company
{
    ...  
}

我有两个管理类:CompanyAdminBrandAdmin。我需要添加一个新品牌的支持 - 创建一个新品牌而不是连接现有品牌 - 来自公司管理员,但我不知道如何实现这一目标。这个想法是:

  • 创建公司
  • 在公司表单中添加一个按钮,我可以保留当前公司ID并将该按钮链接到品牌管理员,以便我可以轻松地向该公司添加新品牌

我正在阅读sonata docs嵌入其他ADMINS 部分尚未准备就绪。能帮我完成这件事吗?我被困了

1 个答案:

答案 0 :(得分:2)

我并不完全理解你的要求,但据我所知:

从品牌

创建/选择/删除公司
class BrandAdmin extends Admin
{
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper->add('company', 'sonata_type_model_list', array(
            'by_reference' => false
        ));
    }
}

文档:Json.NET

以公司形式添加新品牌

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/doctrine-orm-admin/master/doc/reference/form_field_definition.html#advanced-usage-many-to-one