2014-04-15 51 views
1

我目前使用创建后台,并且我在2天前整合了SonataMediaBundle(app-dev版本)。然而,来自奏鸣曲包的编辑/创建模板有一些错误!我修复了它们(它们只是小枝错误)。如何覆盖Sonata Media Bundle模板?

但我不能仅仅在供应商中进行更改。覆盖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

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

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

你在你会除了索纳塔使用的方便其他任何捆绑的应用程序/资源,从而扩展了同样的方式覆盖他们创建一个名为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代码复制到它中,然后根据需要进行修改。

希望这会有帮助