Symfony 3.4: рендеринг нескольких массивов в ветке - PullRequest
0 голосов
/ 13 сентября 2018

Я получил форму с CollectionType, которая хранит массив в базе данных SQLite, это структура объекта сущности, возвращаемого в контроллер:

Expertations {#666 ▼
-id: 9
  -date: DateTime @1536749818 {#653 ▶}
  -client: 1
  -status: 0
  -price: 0.0
  -expiration: DateTime @1536749818 {#650 ▶}
  -tipo: 1
  -kw: 12
  -piani_casa: 2
  -riscaldamento: "1"
  -opere_murarie: false
  -trifase: false
  -sconto: 10.0
  -level: 1
  -square_meters: 140
  -floor: array:6 [▼
    0 => 1
    1 => 1
    2 => 2
    3 => 2
    4 => 2
    5 => 2
  ]
  -ambient: array:6 [▼
    0 => Rooms {#671 ▼
      -id: 10
      -name: "Cucina"
      -level: 1
      -sq_meter_from: 0.0
      -sq_meter_to: 999.0
      -punti_prese: 5
      -punti_luce: 1
      -prese_tv: 1
    }
    1 => Rooms {#649 ▶}
    2 => Rooms {#670 ▶}
    3 => Rooms {#669 ▶}
    4 => Rooms {#649 ▶}
    5 => Rooms {#668 ▶}
  ]
  -name: array:6 [▼
    0 => "Cucina"
    1 => "Soggiorno"
    2 => "Corridoio"
    3 => "Camera Padronale"
    4 => "Camera Figlia"
    5 => "Bagno"
  ]
  -pp: array:6 [▼
    0 => 5
    1 => 4
    2 => 2
    3 => 4
    4 => 4
    5 => 2
  ]
  -pl: array:6 [▼
    0 => 1
    1 => 1
    2 => 2
    3 => 1
    4 => 1
    5 => 2
  ]
  -pt: array:6 [▼
    0 => 1
    1 => 1
    2 => 0
    3 => 1
    4 => 1
    5 => 0
  ]
  -num_circuiti: 5
  -num_prese_telefono_dati: 3
  -illum_sicurezza: 2
  -spd: 1
  -imp_ausiliari: 1
}

Это должно быть отображено в шаблоне ветки в виде таблицы, большая часть данных извлекается с использованием простого доступа к массиву, например {{ item.string }}. Поля с именем floor, ambient, name, pp, pl, pt должны отображаться в столбце, одна строка для элемента (вы должны увидеть, что в этом примере все элементы содержат 5 ключей).

Я попытался получить доступ к массиву, как обычно, но получил ошибку, связанную с попыткой доступа к ключу, который на самом деле является целым числом (не должно быть?)

вот ветка для цикла, который не работает:

{% for items in item %}
<tr>
    <td>{{ items.floor }}</td>
    <td>{{ items.ambient }}</td>
    <td>{{ items.name }}</td>
    <td>{{ items.pp }}</td>
    <td>{{ items.pl }}</td>
    <td>{{ items.pt }}</td>
</tr>
{% endfor %}

Возвращенная ошибка: Impossible to access an attribute ("floor") on a integer variable ("1").

Ожидаемое поведение:

Эти элементы должны отображаться в таблице, например: первая строка, показывать floor.0 значение, ambient.0.name, name.0 значение, pp.0 значение, pl.0 значение, pt.0 значение`, второй столбец и т. Д.

Кто-нибудь найдет решение, чтобы правильно его отобразить?

1 Ответ

0 голосов
/ 14 сентября 2018

Для одного объекта Expertations (с именем yourObject) цикл должен выглядеть следующим образом:

{% for key in yourObject.floor|keys %}
    <tr>
        <td>{{ yourObject.floor[key] }}</td>
        <td>{{ yourObject.ambient[key] }}</td>
        <td>{{ yourObject.name[key] }}</td>
        <td>{{ yourObject.pp[key] }}</td>
        <td>{{ yourObject.pl[key] }}</td>
        <td>{{ yourObject.pt[key] }}</td>
    </tr>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...