我目前正在使用SonataAdminBundle
创建后台办公室,并且我在2天前集成了SonataMediaBundle
(app-dev版本)。但是,奏鸣曲包中的编辑/创建模板有一些错误!我已修复它们(它们只是树枝错误)。
但我无法在供应商中进行更改。覆盖SonataMediaBundle
模板的正确方法是什么?
我尝试过经典的AdminBundle
方式,但它不起作用!这是代码:
sonata.admin.media:
class: Acme\AdminBundle\Admin\MediaAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Media Library", label: "Media" }
arguments:
- ~
- ~
- ~
- @sonata.media.pool
calls:
- [ setTemplate, [edit, AcmeAdminBundle:Media:edit.html.twig]]
答案 0 :(得分:2)
实际上,现在我已经弄明白了。要覆盖媒体预览或表单,您应该覆盖表单窗口小部件,或自定义表单主题。
实施例: 在config.yml文件中添加配置:
twig:
form:
resources:
# other files
- 'AdminBundle:Form:mediaPreview.html.twig'
媒体预览文件应如下所示:
{% block sonata_media_type_widget %}
<< your code here >>
{% endblock sonata_media_type_widget %}
答案 1 :(得分:0)
你覆盖它们的方式与除了Sonata之外的任何其他捆绑包一样易于扩展,因此在App / Resources中创建一个名为ApplicationSonataMediaBundle或ApplicationSonataAdminBundle的文件夹,并在此文件夹中创建一个与该文件夹同名的文件夹你试图覆盖。
例如,我目前使用以下内容:
App/Resources/ApplicationSonataNewsBundle/translations/SonataNewsBundle.en.xliff
覆盖其新闻包中的任何英语翻译或
App/Resources/ApplicationSonataUserBundle/views/layout.html.twig
覆盖其布局模板。
我建议你需要在这些方面创造一些东西。
App/Resources/ApplicationSonataMediaBundle/views/MediaAdmin/edit.html.twig
将Sonata代码复制到其中,然后根据需要进行修改。
希望这有帮助