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

Posted

技术标签:

【中文标题】Symfony 3 Sonata Admin 使用注释创建管理员【英文标题】:Symfony 3 Sonata Admin create admin using annotation 【发布时间】:2016-07-08 04:10:21 【问题描述】:

我尝试仅使用来自 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 中注册管理员时,它可以工作,但使用注释号。

汤姆

【问题讨论】:

【参考方案1】:

正如JMSDiExtraBundle 的文档所述:

默认情况下,您只能在非服务控制器上使用提供的注解;没有扫描其他目录。

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

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

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

【讨论】:

@TomaszFurca,如果这回答了您的问题,请标记答案!

以上是关于Symfony 3 Sonata Admin 使用注释创建管理员的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sonata Admin(Symfony 3.3、PHP 7)中使用自定义 javascript 为模态窗口扩展模板?

Symfony - Sonata “在管理池中找不到管理服务“app.admin.post”。”

Symfony 2.3.6 和 Sonata Admin Bundle:空仪表板,没有错误

Symfony 4 + Sonata + Sonata Doctrine ORM Admin Bundle:错误:没有要处理的元数据类

Symfony - Sonata Abstract Admin 和 getDoctrine

Symfony - Sonata-Admin 菜单组翻译