Sonata Admin Bundle - 自定义模板

Posted

技术标签:

【中文标题】Sonata Admin Bundle - 自定义模板【英文标题】:Sonata Admin Bundle - Custom Template 【发布时间】:2018-07-22 20:25:32 【问题描述】:

我想定制我的模板。

service.yml:

admin.globaux:
        class: AppBundle\Admin\ParametreAdmin
        arguments: [~, AppBundle\Entity\ParametreEntity, ~]
        tags:
            -  name: sonata.admin, manager_type: orm, group: Options, label: Globaux
        calls:
            - [ setTemplate, [list, "@SonataAdmin/CRUD/Special/list_parametre_globaux.html.twig"]]
        public: true

list_parametre_globaux.html.twig:

% extends base_template %

    <div>
         object.pourcentageMise 
    </div>

我有这个错误:

(1/1) ServiceNotFoundException 服务“admin.globaux”依赖于不存在的服务“SonataAdmin/CRUD/Special/list_parametre_globaux.html.twig”。

我不明白为什么它不起作用。

感谢您的帮助

【问题讨论】:

您使用的是哪个奏鸣曲管理版? 【参考方案1】:

您正在尝试调用服务,这就是您的消息错误所说的。

calls:
    - [ setTemplate, [list, "@SonataAdmin/CRUD/Special/list_parametre_globaux.html.twig"]]

“@”语法是为服务注入而设计的。

这就是你应该如何编写你的模板调用:

calls:
    - [ setTemplate, [list, "SonataAdminBundle:CRUD/Special:list_parametre_globaux.html.twig"]]

这意味着您的自定义模板位于

vendor/sonata-admin/admin-bundle/Resources/views/CRUD/Special/list_parametre_globaux.html.twig

将文件放在vendor文件夹不是一个好主意,你应该把它放在

src/AppBundle/Resources/views/CRUD/Special/list_parametre_globaux.html.twig

那么你在 service.yml 中的模板调用将是

calls:
    - [ setTemplate, [list, "AppBundle:CRUD/Special:list_parametre_globaux.html.twig"]]

另外,在文件 list_parametre_globaux.html.twig 中,您不应该

% extends base_template %

但是

% extends 'SonataAdminBundle:CRUD:base_list.html.twig' %

这是用于列表操作的树枝模板。 如果您检查位于

的原始模板
vendor/sonata-admin/admin-bundle/Resources/views/CRUD/base_list.html.twig

你会看到不同的方块。您可以通过在自定义树枝模板中编写一些代码来覆盖每个块。

% block name_of_block %
% endblock name_of_block

如果你只想添加东西而不是覆盖整个块,你可以这样做

% block name_of_block %
    enter code here
    parent ()
% endblock name_of_block

最后,如果您只想覆盖块的一部分,那么您必须将整个 base_block 复制/粘贴到您的自定义树枝模板中,然后重写特定部分。

【讨论】:

以上是关于Sonata Admin Bundle - 自定义模板的主要内容,如果未能解决你的问题,请参考以下文章

Sonata Admin Bundle 使用注释的自定义路由

Sonata admin bundle:从全局搜索中排除自定义管理员

Symfony Sonata Admin Bundle - 将带有树枝模板的自定义字段导出到 XLS

Sonata Admin Bundle - 添加多步骤批处理操作

Sonata Admin Bundle 如何配置批处理操作

Sonata Admin Bundle:在列表视图中显示收藏总数