5

私のコントローラーでは、次の変数を設定して 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 配列の項目)、またはいわゆる「添え字」構文 ([]) にアクセスできます。 :

これを機能させるためのアイデアはありますか?

4

1 に答える 1

4

バージョン1.2以降を使用している場合は、attribute機能を試してください

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

リンク先のページにも記載されています...

変数の動的属性を取得する場合は、代わりに属性関数を使用してください。

于 2012-04-24T02:58:59.330 に答える