son*_*ish 5 php slim twig phpactiverecord
在我的控制器中,我设置以下变量并将它们传递给Twig模板:
$data = $model::all(); // returns object [phpactiverecord]
$fields = getFields(); // returns associative array
Run Code Online (Sandbox Code Playgroud)
在我的模板中,我试图像这样访问它们:
{% block rows %}
{% for row in data %}
<tr>
{% for field in fields %}
<td>{{ row[field.name] }}</td>
{% endfor %}
</tr>
{% endfor %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,$ fields定义为:
Array
(
[0] => Array
(
[name] => id
[display] => Id
)
[1] => Array
(
[name] => name
[display] => Name
)
)
Run Code Online (Sandbox Code Playgroud)
和$ data是一个phpactiverecord对象的数组.
如上所述,row [field.name]没有输出任何内容.
如果我更改row [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
Run Code Online (Sandbox Code Playgroud)
根据Twig站点:您可以使用点(.)来访问变量的属性(PHP对象的方法或属性,或PHP数组的项),或所谓的"下标"语法([]) :
有什么想法让这个工作?
如果您使用的是 1.2 或更高版本,请尝试该attribute功能
{{ attribute(row, field.name) }}
Run Code Online (Sandbox Code Playgroud)
甚至在您链接到的页面上也提到了...
如果要获取变量的动态属性,请改用属性函数。