如何覆盖Sonata Media Bundle模板?

时间:2014-04-15 10:04:28

标签: symfony sonata-admin sonata-media-bundle

我目前正在使用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]] 

2 个答案:

答案 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代码复制到其中,然后根据需要进行修改。

希望这有帮助