0

我正在尝试将 KnpMenuBundle 与 Symfony2 和 TWIG 一起使用。

在我的树枝模板中,菜单的名称如下:

<div id="before"></div>
{% set myMenu = knp_menu_get('MyBundle:Builder:myMenu') %} 
{#{{dump(seeMenu)}}#}
{{ knp_menu_render(seeMenu) }}
<div id="after"></div>

当我尝试显示相应的页面时,它返回一个 500 错误,没有更多详细信息。渲染停止在该{{ knp_menu_render(seeMenu) }}行,当我删除或注释该行时错误消失。

由于这个错误,Apache 崩溃了,我必须在每次渲染测试失败后重新启动它。

我的 Builder 类似乎还可以,因为它dump(seeMenu)向我展示了我的期望。

我没有在我的 config.yml 中添加任何关于 knp 的内容(因为文档说它是可选的)。反正我试过了,同样的问题。

我尝试通过 MopaBootstrapBundle ( {{ mopa_bootstrap_menu(seeMenu) }}) 渲染菜单,同样的问题。

Firebug 没有提供有关 500 错误的更多信息,并且 dev.log 文件也没有更多帮助。


[编辑] Apache 日志说:

PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 130968 bytes) in /var/www/myproject/app/cache/dev/classes.php on line 3148

这解释了 Apache 的崩溃。我试图增加内存(ini_set('memory_limit', '256M');in app_dev.php)但问题仍然存在,这意味着某处存在无限循环......


[EDIT2] 经过一番研究,问题似乎来自文件Environment.php的第 348 行:dump(new $cls($this));生成“内存耗尽”错误。

我不知道为什么以及在哪里进一步寻找。我在另一个项目中使用相同版本的 TWIG(1.20)和相同版本的 knpMenuBundle(2.0),它工作正常......


[EDIT3] 我仍然无法使这个 KnpMenuBundle 工作:/ 我试图重新安装整个项目,但它没有改变任何东西。我完全被卡住了,我不知道现在该怎么办..

4

1 回答 1

0

TL;DR:更改 knp_menu.html.twig 的自定义菜单模板名称

我知道这是一个非常古老的问题,但是由于我今天收到此错误,将来可能会有更多人遭受此麻烦。

就我而言,问题只是菜单树枝模板的无限递归。

如果您有一个名为 knp_menu.html.twig 的自定义模板,此行作为第一行:

{% extends 'knp_menu.html.twig' %} 您将获得无限递归,因为 twig 正在扩展相同的模板而不是“原始”knp_menu 模板。

只需更改您的自定义模板名称。

也许你更新了 symfony 包,因为这个问题只存在于较新的版本中。

于 2017-02-26T15:51:09.540 回答