Twig中的实体字段迭代

时间:2014-09-27 07:02:45

标签: symfony twig

我在视图中有很多重复的源代码来显示我的实体。实际上代码只是为了显示实体字段。例如:

//...

<li>{{ entity.code }}</li>
<li>{{ entity.name }}</li>
<li>{{ entity.createdAt|date('d-m-Y H:i:s') }}</li>
<li>{{ entity.updatedAt|date('d-m-Y H:i:s') }}</li>
<li>{{ entity.operator }}</li>

//...

我想在Twig中进行迭代而不是逐个定义对象:

{% for key, field in entity %}
<li>{{ field[key] }}</li>
{% endfor %}

这可以在Twig中做到吗?或者这只是不好的做法必须避免,并且最好的做法是做这件事吗?

1 个答案:

答案 0 :(得分:0)

创建一个twig函数或过滤器,然后使用get_class_methods或get_class_vars

然后你可以做

{% set vars = getClassVars(entity) %}
{% for x in vars %}
  <li>{{ attribute(entity, x) }}</li>
{% endfor %}

http://symfony.com/doc/current/cookbook/templating/twig_extension.html http://php.net/manual/en/function.get-class-vars.php http://php.net/manual/en/function.get-class-methods.php