是否可以在Symfony2中更改模板?

时间:2013-12-10 09:10:04

标签: symfony twig

我在项目中安装了SonataBundle,我需要更改随附的standard_layout.html.twig(即更改块' notice')。

我将一个同名的空文件放入

  

/应用/资源/ SonataAdminBundle /视图

目录和这个文件被Symfony捕获,但现在我想在基本模板中做一些小改动 可能吗?我试图放置

{% extends 'SonataAdminBundle::standard_layout.html.twig' %}

在此文件的第一行,但这会导致致命错误

  

' 100'的最大功能嵌套级别达到

3 个答案:

答案 0 :(得分:3)

我找到了解决方案。 Sonata允许用户配置用于基本布局的模板。

# /app/config/config.yml
sonata_admin:
    title: Admin
    templates:
        layout:  SonataAdminBundle::base.html.twig

现在在app / Resources / SonataAdminBundle / views目录中创建文件base.html.twig,其中包含以下内容:

{% extends 'SonataAdminBundle::standard_layout.html.twig' %}

它有效。

答案 1 :(得分:1)

在php.ini中增加xdebug.max_nesting_level的值:http://xdebug.org/docs/all_settings#max_nesting_level

答案 2 :(得分:1)

当您添加/app/Resources/SonataAdminBundle/views/standard_layout.html.twig时,您基本上会替换原始版本,以便引用SonataAdminBundle::standard_layout.html.twig(包括,扩展等)的所有内容现在都引用您的新版本。

如果你然后使用{% extends 'SonataAdminBundle::standard_layout.html.twig' %},那么你正在扩展原文,它被你的原文取代,扩展原文...意思是你实际上是一遍又一遍地扩展自己直到页面死亡。

据我所知,解决此问题的唯一方法是将整个原始SonataAdminBundle::standard_layout.html.twig复制到/app/Resources/SonataAdminBundle/views/standard_layout.html.twig,然后根据需要进行编辑。