我在视图中有很多重复的源代码来显示我的实体。实际上代码只是为了显示实体字段。例如:
//...
<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中做到吗?或者这只是不好的做法必须避免,并且最好的做法是做这件事吗?
答案 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