如何覆盖 SonataUserBundle 模板
Posted
技术标签:
【中文标题】如何覆盖 SonataUserBundle 模板【英文标题】:How to override SonataUserBundle templates 【发布时间】:2014-05-22 08:49:31 【问题描述】:我已经安装了 SonataAdminBundle 和 SonataUserBundle,我正在尝试覆盖一些树枝模板。除了 user_block.html.twig 之外,我已经成功完成了所有操作
这是我的项目 ../app/Resources/ 目录结构:
Resources/
├── ApplicationSonataUserBundle
│ └── views
│ ├── Admin
│ │ └── Core
│ │ └── user_block.html.twig <--- it doesn't work
│ ├── layout.html.twig
│ ├── Profile
│ │ ├── action.html.twig
│ │ ├── edit_authentication.html.twig
│ │ ├── edit_profile.html.twig
│ │ └── show.html.twig
│ └── Security
│ └── login.html.twig
├── SonataAdminBundle
│ └── views
│ └── standard_layout.html.twig
└── TwigBundle
└── views
└── Exception
└── error.html.twig
我也试过把它放在 SonataAdminBundle 或 SonataUserBundle 目录下,但没有,它对我不起作用。
如何覆盖 user_block 模板?
谢谢
【问题讨论】:
请将您的答案发布为答案并将其标记为已接受! 八小时后我才能回答,因为我的声望不够;) @xabi82 你用什么来生成你的 ascii 目录树? @codecowboy 我在 linux 系统上使用了“tree”命令。您可以在此链接后查看使用示例 -> computerhope.com/unix/tree.htm 【参考方案1】:或者,您可以使用配置,如下所示:
sonata_admin:
templates:
layout:
user_block: '::Admin/user_block.html.twig'
然后把你的模板放在这里:app/Resources/views/Admin/user_block.html.twig
【讨论】:
感谢您提供替代解决方案 :)【参考方案2】:回答
之前显示的目录文件结构可以正常工作。我已经解决了这个问题,只需在 standard_layout.html.twig 上添加必要的 js 和 css
% block stylesheets %
...
<!-- custom stylesheets -->
<link rel="stylesheet" href=" asset('bundles/mybundle/css/mycssfile.css') " media="all">
% endblock %
% block javascripts %
...
<!-- custom js -->
<script src=" asset('bundles/mybundle/js/myscriptfile.css') "></script>
% endblock %
【讨论】:
覆盖属于第三方捆绑包的模板不是一个好习惯。例如,您必须使用 setTemplate。 symfony.com/doc/master/bundles/SonataAdminBundle/reference/…以上是关于如何覆盖 SonataUserBundle 模板的主要内容,如果未能解决你的问题,请参考以下文章
自 Symfony2 更新到 2.8 以来覆盖注册表单(SonataUserBundle)
Symfony2 / SonataUserBundle - 注册后自动登录
Sonata Admin Bundle + Sonata User Bundle:覆盖登录表单