我有一个返回所有菜单的控制器。从twig文件中,我用来访问控制器以获取所有菜单。
我可以在twig文件中看到所有菜单。
代码:
Twig文件:
{% set menulist%}{%render url('get_all_menus')%}{% endset %}
我使用for循环来打印我的菜单名称。像
{% for menu in menulist %}
{{menu.MenuName}}
{%endfor%}
但是我没有从上面的循环获得任何值。当我使用dump(菜单列表)时,我得到结果
[{"FunctionName":"Home","ModuleName":null,"SubModuleName":null,"PageURL":"home_page","AccessLevel":"2"}]
这是我从控制器返回的JSON数据。如何从for循环中获取值?我在这里犯了什么错误吗?
答案 0 :(得分:1)
为什么要渲染另一个控制器?它对应用程序执行第二次请求。创建自定义树枝功能以返回菜单元素 - > http://symfony.com/doc/current/cookbook/templating/twig_extension.html这将更快,JSON问题应该消失。或者,如果您不想创建树枝功能 - 在控制器操作中使用名称' get_all_menus'渲染部分菜单树枝文件。
答案 1 :(得分: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;
}