Closed nikola166 closed 8 years ago
Какая версия Fenom используете? У меня не воспроизвелся баг по вашим шаблонам. У Вас в шаблоне кое где вместо "c" стоит русское "с". Пришлите примерные данные на которых у вас выходит в бесконечный цикл.
Версия "fenom/fenom": "^2.11". Точные данные дать не могу. Обычные данные:
$categoryList = array(
'id' => 1,
'name' => 'Test',
'child' => array(
'id' => 2, 'name' => 'Test2',
'child' => array(
'id' => 1,
'name' => 'Test',
'child' => array('id' => 3, 'name' => 'Test3', 'child' => array()
)
);
{if $n < 10}
{include 'recursive.tpl' n=$n - 1}
{/if}
Вот такая конструкция уводит компилятор в бесконечную рекурсию
https://github.com/fenom-template/fenom/blob/master/src/Fenom/Template.php#L243 - если начать печатать $tag
, то получается примерно следующее:
if $categories?include "products/categories/recursive.tpl" n=10if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include 'products/categories/recursive.tpl' n=$n - 1if $n < 10include ...много повторений, пока стек не кончится
Версия 2.11.3
. Хотя наверно косяк ещё мой, т.к. включена опция force_include
Если её выключить, шаблон компилируется, только вот дальше видимо входит в бесконечный цикл где-то ещё
Действительно баг есть. Перестала работать проверка, что этот шаблон подключен, когда включена опция force_include. Исправлю и добавлю тесты на проверку. Пока рекомендую force_include отключить до следующего релиза.
Спасибо
1 октября 2016 г., 17:03 пользователь Ivan Shalganov < notifications@github.com> написал:
Действительно баг есть. Перестала работать проверка что этот шаблон подключен когда включена опция force_include. Исправлю и добавлю тесты на проверку. Пока, рекомендую force_include отключить до следующего релиза.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/fenom-template/fenom/issues/241#issuecomment-250911385, or mute the thread https://github.com/notifications/unsubscribe-auth/AIf2mNRUSJrc1d5RTIZIU3yA5ClkPCiWks5qvloagaJpZM4JP20H .
исправлено в 2.11.4
Доброго времени суток. Поймал очень странный баг.
2 шаблона(цель: вывести дерево любой вложенности) 1ый Шалон (Переменная $list =>array('id' => 1 , 'name' => 'test', 'child' => array( и т.д.)))
2ой Шалон
Такая конструкция уходит в бесконечный цикл, и не понятно как с этим бороться. Еще наткнулся на баг вот такой: Если во втором шаблоне написать: (Переменная $children = null)
Тоже уходит в бесконечный цикл, хотя по идеи не должен проводить foreach ни разу.