В моем контроллере я устанавливаю следующие переменные и передаю их в шаблон Twig:
$data = $model::all(); // returns object [phpactiverecord]
$fields = getFields(); // returns associative array
В моем шаблоне я пытаюсь получить к ним доступ следующим образом:
{% block rows %}
{% for row in data %}
<tr>
{% for field in fields %}
<td>{{ row[field.name] }}</td>
{% endfor %}
</tr>
{% endfor %}
{% endblock %}
В этом сценарии $fields определяется как:
Array
(
[0] => Array
(
[name] => id
[display] => Id
)
[1] => Array
(
[name] => name
[display] => Name
)
)
а $data — это массив объектов phpactiverecord.
Как написано выше, для row[field.name] ничего не выводится.
Вот результаты, которые я вижу, если я изменяю строку [field.name]:
row.name -> outputs Value I would expect from row[field.name]
field.name -> outputs "name"
row['name'] -> outputs nothing
row[field.name] -> outputs nothing
Согласно сайту Twig: вы можете использовать точку (.) для доступа к атрибутам переменная (методы или свойства объекта PHP или элементы массива PHP), или так называемый синтаксис «индекс» ([]):
Любые идеи о том, как заставить это работать?