PHP и Twig: проблема с доступом к переменным в шаблоне

В моем контроллере я устанавливаю следующие переменные и передаю их в шаблон 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), или так называемый синтаксис «индекс» ([]):

Любые идеи о том, как заставить это работать?


person sonicradish    schedule 23.04.2012    source источник


Ответы (1)


Если вы используете версию 1.2 или более позднюю, попробуйте функцию attribute.

{{ attribute(row, field.name) }}

Это даже упоминается на странице, на которую вы ссылаетесь...

Если вы хотите получить динамический атрибут для переменной, используйте вместо этого функцию атрибута.

person Phil    schedule 24.04.2012