-->

如何覆盖索纳塔媒体包模板?(How to override Sonata Media Bundle

2019-10-19 21:40发布

我目前使用SonataAdminBundle为创建一个后台的,我已经集成SonataMediaBundle (APP-dev的版本)2天前。 编辑/创建奏鸣曲包模板但是有一些错误! 我已经固定他们(和他们只是小枝错误)。

但我不能只是做在供应商的变化。 什么是覆盖的正确方法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]] 

Answer 1:

其实,现在我已经想通了。 为了覆盖媒体预览或形式,你应该覆盖的表单控件,或自定义表单的主题。

例如:在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 %}


Answer 2:

您覆盖它们,你会除了索纳塔使用的方便其他任何捆绑的应用程序,从而延长了同样的方法/资源创建一个名为ApplicationSonataMediaBundle或ApplicationSonataAdminBundle文件夹,该文件夹中创建同名的您要覆盖一个的文件夹中。

比如我目前使用以下命令:

App/Resources/ApplicationSonataNewsBundle/translations/SonataNewsBundle.en.xliff

要覆盖所有的英文译本在他们的新闻包或

App/Resources/ApplicationSonataUserBundle/views/layout.html.twig

以覆盖其布局模板。

我建议你需要创造这些方针的东西。

App/Resources/ApplicationSonataMediaBundle/views/MediaAdmin/edit.html.twig

和索纳塔代码复制进去,然后修改根据您的需要。

希望这可以帮助



文章来源: How to override Sonata Media Bundle templates?