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