2016-05-13 82 views
2

我目前正在Symfony 2.8的网站项目上工作。 但我有一个问题:我想显示来自JSON对象的信息。但是,我需要做三个嵌套的for-loop来做我想做的事。三个嵌套for循环似乎不工作

因此,这里是我的代码块:

我想浏览数组:

element stdClass Object => 
(
[partschemes] => Array 
(
    [0] => ([id] => 1) 
) 
[decodedPartitions] => Array 
    (
     [0] => stdClass Object 
      (
       [partitions] => Array 
        (
         [0] => stdClass Object 
          (
           [name] => WINDOWS 
           [type] => primary 
           [size] => - 
           [filesystem] => fat32 
          ) 

         [1] => stdClass Object 
          (
           [name] => DATA* 
           [type] => primary 
           [size] => 256 Mo 
           [filesystem] => fat32 
          ) 

        ) 

      ) 

    ) 
) 

我的树枝模板:

{% for i, disk in element.decodedPartitions %} 
     <tr> 
      <th class="text-center" rowspan="3" width="10%"> 
       <a href="{{ app.request.baseUrl }}/partscheme/details/{{ element.partschemes[i].id }}" class="btn btn-info" title="{{ 'button.details' | trans }}">Disk {{ i }}</a> 
      </th> 
     </tr> 

     {% for j, part in disk.partitions %} 
     <tr> 
      <th class="text-center" width="10%">Partition {{ j }}</th> 
      <td> 
       {% for k, partInfo in part %} 
        {{ k }}: {{ partInfo }}<br> 
       {% endfor %} 
      </td> 
     </tr> 
     {% endfor %} 
    {% endfor %} 

这样做的结果,产生的页面显示我,没有不同分区的信息:

--------------------------------- 
     | Partition 0 |   | 
Disk 1 |-------------|----------| 
     | Partition 1 |   | 
--------------------------------- 
+1

您不能直接在树枝中迭代对象属性('部件是对象,不是数组!)。你可以改变导出的变量,这样'part'就是数组,或者你可以查询具体属性,比如'part.name','part.type',...或者你可以用自定义过滤器将对象转换为数组,像这里所描述的:http://stackoverflow.com/questions/11841515/twig-iterate-over-object-properties – Miro

回答

0

感谢Miro,我能够迭代我的JSON对象。

原因是无法直接在Twig中迭代stdClass对象。所以我在控制器中使用我的json_decode添加了一个参数。

要将JSON转换成stdClass的对象:json_decode($json)

要将JSON转换成关联数组:json_decode($json, true)

更多信息关于json_decode