2015-08-19 4 views
0

Я пытаюсь использовать KnpMenuBundle с Symfony2 & TWIG.Ошибка 500 на knp_menu_render/«Память исчерпана» в TWIG/Environment.php

В моем шаблоне веточки меню называется так:

<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 не более полезен.


[EDIT] 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'); в app_dev.php), но проблема остается, а это значит, что есть бесконечный цикл где-то ...


[EDIT2] После некоторых исследований, кажется, что проблема исходит от строка 348 файла Environment.php: dump(new $cls($this)); генерирует ошибку «исчерпана память».

Я понятия не имею, почему и где искать дальше. Я использую ту же версию прутик (1.20) с той же версией knpMenuBundle (2.0) в другом проекте, и он прекрасно работает ...


[EDIT3] Я все еще не в состоянии сделать эту работу KnpMenuBundle:/Я попытался переустановить весь проект, но ничего не изменил. Я полностью застрял, и я понятия не имею, что теперь делать ..

+0

У вас уже есть ограничение на 256 Мб. Поэтому установка его на 256 Мб не увеличивает его. «это означает, что где-то есть бесконечный цикл» --- нет, это не значит. – zerkms

+0

My Symfony dev bottom bar сказал, что по умолчанию у меня есть только 128Mb. Но после вашего комментария я установил его на 1024 Мб, и проблема остается, мой браузер загружает страницу немного дольше, время для заполнения памяти, я думаю. – Blacksad

+0

«Время заполнить память, я думаю» --- заполнить ее тем, что? – zerkms

ответ

0

TL; DR: Изменить пользовательское имя шаблона меню knp_menu.html.twig

Я знаю, что это очень старый вопрос, но поскольку сегодня я получил эту ошибку, возможно, больше людей пострадают от этой проблемы в будущем.

В моем случае проблема была просто бесконечной рекурсией шаблона шаблона меню.

Если у вас есть собственный шаблон под названием knp_menu.html.twig с этой линией в качестве первой линии:

{% extends 'knp_menu.html.twig' %} вы получаете бесконечную рекурсию, потому что прут расширяют тот же шаблон вместо «оригинального» knp_menu шаблон.

Просто измените свое имя шаблона.

Возможно, вы обновили пакеты symfony, потому что эта проблема возникает только в более новых версиях.