Как получить доступ к переменной массива из файла ветки

У меня есть контроллер, который возвращает все меню. Из файла ветки, я использую для доступа к контроллеру, чтобы получить все меню.

Я мог видеть все мои меню в моем файле ветки.

Код:

Twig File:

{% set menulist%}{%render url('get_all_menus')%}{% endset %}

Я использую для цикла, чтобы напечатать название моего меню. подобно

{% for menu in menulist %}

{{menu.MenuName}}

{%endfor%}

Но я не получаю никаких значений из цикла for. Когда я использую dump (menu-list), я получаю результат как

[{"FunctionName":"Home","ModuleName":null,"SubModuleName":null,"PageURL":"home_page","AccessLevel":"2"}]

Это данные JSON, которые я возвращаю из моего контроллера. Как я могу получить значения из моего цикла for? Я здесь ошибаюсь?

0

Решение

Почему вы рендеринг другого контроллера? Выполняет второй запрос к заявке. Создать собственную функцию ветки для возврата элементов меню -> http://symfony.com/doc/current/cookbook/templating/twig_extension.html
Это будет быстрее, и проблема JSON должна исчезнуть. Или, если вы не хотите создавать функцию ветки — визуализируйте частичный файл ветки меню в действии контроллера с именем ‘get_all_menus’.

1

Другие решения

Вам нужно сохранить результат меню в одной переменной, как показано ниже:

И использовал json_decode Функция для преобразования ваших данных JSON в массив, чем вы можете получить данные вашего меню через цикл.

$menuJsonData = '[{"FunctionName":"Home","ModuleName":null,"SubModuleName":null,"PageURL":"home_page","AccessLevel":"2"}]';

$menuData = json_decode($test);

foreach($menuData as $menu){
echo $menu->FunctionName;
}
0

По вопросам рекламы [email protected]