在php模板中,我有一个对象$obj
,它有一些属性,如$obj->attr_1, $obj->attr_2
等。
如何在for循环中从Twig模板中调用它们?
我试过这样:
{% for i in 1..3 %}
{% set new_attr = 'attr_' ~ i %}
{{obj.new_attr}}
{% endfor %}
或者像这样
{% for i in 1..3 %}
{% set new_attr = 'attr_' ~ i %}
{{obj[new_attr]}}
{% endfor %}
但它不起作用。
答案 0 :(得分:1)
尝试使用attribute功能。
答案 1 :(得分:0)
两种方法都不起作用。在第一个中,new_attr是一个字符串值,所以我相信 obj.new_attr将尝试字符串连接。第二种方法不起作用,因为它将obj视为一个数组,这与对象不同。
您所要求的是反思 - 向对象询问有关其自身的信息的能力,例如其方法。 PHP对反射有基本的支持,如http://www.php.net/manual/en/book.reflection.php所述(请参阅getMethods条目),但需要安装扩展。
作为替代方案,为什么不在你的对象上使用一个名为get的方法,它接受一个数字,然后调用适当的方法,例如
public function get($attr)
{
if ($attr == 1) return $this->attr_1();
// etc...
}