ABC*_*ABC 4 php symfony twig sonata-admin
我正在为我的项目使用SonataAdminBundle,我想覆盖一个块.
如果我在app/Resources/views/SonataAdminBundle/views/standard_layout.html.twig
清除缓存中创建模板并执行此操作:
{% extends 'SonataAdminBundle::standard_layout.html.twig' %}
{% block theBlockIWantToOverride %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
我收到一个Maximum function nesting level of '250' reached, aborting!
错误.
如果我删除该extends
部件,则会呈现空白页面.相反,我必须将整个文件内容复制到这个新文件,然后更改块内容.我知道这是Symfony2的工作原理,我只是不知道是否有一个没有所有代码的解决方法?
我想这样做的原因是因为我使用了SensioLabsInsight而且它一直在困扰raw
着SonataAdminBundle使用的枝条过滤器.我知道我可以忽略警告,但感觉不对.
此外,我尝试通过创建一个包来覆盖该包php app/console generate:bundle
,然后在src/Vendor/AdminBundle/VendorAdminBundle.php中添加:
/**
* {@inheritdoc}
*/
public function getParent()
{
return 'SonataAdminBundle';
}
Run Code Online (Sandbox Code Playgroud)
并完成了上述过程,添加了一个src/Vendor/AdminBundle/Vendor/Resources/views/standard_layout.html.twig
没有解决问题.再次,得到了嵌套级错误.
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
Run Code Online (Sandbox Code Playgroud)