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