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

0

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

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

Код:

Twig Файл:

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

Я использую for loop для печати имени моего меню. подобно

{% for menu in menulist %}

    {{menu.MenuName}}

{%endfor%}

Но я не получаю никаких значений из цикла выше. Когда я использую дамп (список меню), я получаю результат как

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

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

Теги:
symfony-2.3

2 ответа

1

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

0

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

И используется функция 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
    Я могу сделать это в моем контроллере, но я хотел бы сделать это в файле ветки. Это возможно в файле ветки ???
  • 0
    @ user2743855, пожалуйста, проверьте эту ссылку для декодирования данных JSON в файле ветки: stackoverflow.com/questions/14500698/decoding-json-in-twig

Ещё вопросы

Сообщество Overcoder
Наверх
Меню