我正在为项目使用SonataAdminBundle,我想覆盖一个块。
如果我在app/Resources/views/SonataAdminBundle/views/standard_layout.html.twig
中创建模板,请清除缓存并执行此操作:
{% extends 'SonataAdminBundle::standard_layout.html.twig' %}
{% block theBlockIWantToOverride %}
{% endblock %}
我收到Maximum function nesting level of '250' reached, aborting!
错误。
如果我删除extends
部分,则会呈现空白页面。相反,我必须将整个文件内容复制到这个新文件,然后更改块内容。我知道这就是Symfony2的工作原理,我只是不知道是否有解决方法而没有所有的代码?
我想这样做的原因是因为我使用了SensioLabsInsight而且它一直困扰着SonataAdminBundle使用的raw
枝条过滤器。我知道我可以忽略警告,但感觉不对。
另外,我试图通过创建一个包php app/console generate:bundle
来覆盖该包,然后在src / Vendor / AdminBundle / VendorAdminBundle.php中添加:
/**
* {@inheritdoc}
*/
public function getParent()
{
return 'SonataAdminBundle';
}
并完成了上述过程,添加了src/Vendor/AdminBundle/Vendor/Resources/views/standard_layout.html.twig
并没有解决问题。再次,得到了嵌套级错误。
答案 0 :(得分:5)
app/Resources/views/SonataAdminBundle/views/standard_layout.html.twig
处的模板正在扩展SonataAdminBundle::standard_layout.html.twig
,这是同一个文件,这意味着它只会自我扩展直到它死亡。
您应该复制文件的内容并更改其中所需的内容。
或者您可以复制原始standard_layout.html.twig
并重命名(例如standard_base.html.twig
),然后覆盖您的standard_layout.html.twig
版本中的块,然后扩展您的standard_base.html.twig
更为可取的是,对于SonataAdminBundle更好,您可以使用不同的命名模板(例如VendorAdminBundle::standard_layout_override.html.twig
)作为standard_template.html.twig
的版本来扩展原始文件并在配置中设置它。 ..
sonata_admin:
templates:
layout: VendorAdminBundle::standard_layout_override.html.twig
答案 1 :(得分:1)
按照您尝试的方式:
app/Resources/views/SonataAdminBundle/views/standard_layout.html.twig
{% extends 'SonataAdminBundle::standard_layout.html.twig' %}
使用文档:http://sonata-project.org/bundles/admin/master/doc/reference/templates.html
提取:
sonata_admin:
templates:
layout: SonataAdminBundle::standard_layout.html.twig
ajax: SonataAdminBundle::ajax_layout.html.twig
list: SonataAdminBundle:CRUD:list.html.twig
show: SonataAdminBundle:CRUD:show.html.twig
edit: SonataAdminBundle:CRUD:edit.html.twig
history: SonataAdminBundle:CRUD:history.html.twig
preview: SonataAdminBundle:CRUD:preview.html.twig
delete: SonataAdminBundle:CRUD:delete.html.twig
batch: SonataAdminBundle:CRUD:list__batch.html.twig
acl: SonataAdminBundle:CRUD:acl.html.twig
action: SonataAdminBundle:CRUD:action.html.twig
select: SonataAdminBundle:CRUD:list__select.html.twig
filter: SonataAdminBundle:Form:filter_admin_fields.html.twig
dashboard: SonataAdminBundle:Core:dashboard.html.twig
search: SonataAdminBundle:Core:search.html.twig
batch_confirmation: SonataAdminBundle:CRUD:batch_confirmation.html.twig