简体   繁体   English

如何从树枝文件访问数组变量

[英]How to access array variable from a twig file

I have a controller which returns all menus. 我有一个控制器,可以返回所有菜单。 From twig file, i use to access controller to get all menus. 从树枝文件,我用来访问控制器以获取所有菜单。

I could just see all my menus in my twig file. 我可以在我的树枝文件中看到所有菜单。

Code: 码:

Twig File : 树枝文件:

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

I use for loop to print my menu name. 我使用for循环来打印我的菜单名称。 Like 喜欢

{% for menu in menulist %}

    {{menu.MenuName}}

{%endfor%}

But I don't get any values from the above for loop. 但是我没有从上面的for循环中得到任何值。 When I use dump(menu-list) I get result as 当我使用dump(menu-list)时我得到的结果是

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

Which is a JSON data that I return from my controller. 这是我从控制器返回的JSON数据。 How can i get the values from my for loop? 我如何从for循环中获取值? Am i making any mistake here? 我在这里犯错吗?

Why you are rendering another controller? 为什么要渲染另一个控制器? It performs second request to application. 它执行对应用程序的第二个请求。 Create custom twig function to return menu elements -> http://symfony.com/doc/current/cookbook/templating/twig_extension.html 创建自定义的树枝函数以返回菜单元素-> http://symfony.com/doc/current/cookbook/templating/twig_extension.html
That will be faster and JSON problem should disappear. 这样会更快,并且JSON问题应该消失了。 Or if you don't want to create twig function - render partial menu twig file in controller action with name 'get_all_menus'. 或者,如果您不想创建树枝功能,请在控制器操作中使用名称“ get_all_menus”呈现部分菜单树枝文件。

You need to store menu result in one variable like below : 您需要将菜单结果存储在一个变量中,如下所示:

And used json_decode function for convert your json data into array than you can get your menu data through loop. 并使用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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM