2016-05-13 87 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