Symfony 3 Sonata Admin 使用注释创建管理员


Symfony 3 Sonata Admin create admin using annotation

我尝试仅使用JMSDiExtraBundle的注释来创建奏鸣曲管理员。

管理:

/**
 * @DI'Service("sonata.admin.company")
 * @DI'Tag("sonata.admin", attributes = {
 *     "manager_type" = "orm",
 *     "label"="Category",
 *     "group"="Orders"
 *      })
 */
class CompanyAdmin extends Admin
{
    /**
     * @DI'InjectParams({
     *     "code" = @DI'Inject("%admin__company__class%"),
     *     "class" = @DI'Inject("%admin__company__code%"),
     *     "baseControllerName" = @DI'Inject("%admin__company__base_controller_name%")
     * })
     */
    public function __construct($code, $class, $baseControllerName)
    {
        parent::__construct($code, $class, $baseControllerName);
    }
}

和带有参数的文件:

parameters:
#    parameter_name: value
    admin__company__class: AppBundle'Entity'Company
    admin__company__base_controller_name: SonataAdminBundle:CRUD
    admin__company__code: admin.company

当我在 yml 中注册管理员时,它可以工作,但使用注释号。

汤姆

正如 JMSDiExtraBundle 的文档所述:

缺省情况下,只能在非服务控制器上使用提供的注释;不会扫描其他目录。

但是,如果您还想使用注释来配置常规服务,则可以配置更多位置,如下所示。

如果您想通过注释在您的捆绑包中配置服务,或者在任何捆绑包结构之外(例如在 src/目录中)中配置一些服务,您可以使用以下配置选项,以便捆绑包将选取它们,并将它们添加到您的依赖注入容器中:

jms_di_extra:
    locations:
        all_bundles: false
        bundles: [FooBundle, AcmeBlogBundle]
        directories: ["%kernel.root_dir%/../src"]