如何从twig文件中访问数组变量

时间:2014-11-15 05:07:05

标签: php symfony symfony-2.3

我有一个返回所有菜单的控制器。从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循环中获取值?我在这里犯了什么错误吗?

2 个答案:

答案 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;
}