目前,在我的索引页面中,我显示了动态对象和动态属性中对象属性的值。
{% for object in objects %}
<tr>
{% for property in properties %}
<td>{{ attribute(object, property) }}</td>
{% endfor %}
</tr>
{% endfor %}
这里的对象和属性都是动态的。我将属性的值输出为attribute(object, property)
。但布尔类型有一些属性。目前,这些布尔属性的输出为0
或1
。我需要输出no
或yes
而不是0
或1
。我怎么能这样做?
一种选择可能是找出财产的类型。但我不知道如何从动态对象和属性中获取属性的类型。
编辑:大多数答案都在考虑所有属性都是布尔类型。但其中一些是布尔值,其中一些不是布尔值。
答案 0 :(得分:0)
您可能需要考虑使用 same as Twig功能实现Twig条件语句(可插入Twig宏):
{% for object in objects %}
<tr>
{% for property in properties %}
{% if attribute(object, property) is same as(true) %}
<td>yes</td>
{% elseif attribute(object, property) is same as(false) %}
<td>no</td>
{% else %}
<td>{{ attribute(object, property) }}</td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
如 same as 文档中所述:
与相同,检查变量是否与另一个变量相同。这相当于PHP中的===
答案 1 :(得分:0)
如果您的属性函数仅返回0,1您也可以尝试 ternary 运算符:
{% for object in objects %}
<tr>
{% for property in properties %}
<td>{{ attribute(object, property) ? 'Yes' : 'No'}}</td>
{% endfor %}
</tr>
{% endfor %}
修改:您可以尝试 in
{% set boolArray = [1, 0] %}
{% for object in objects %}
<tr>
{% for property in properties %}
<td>
{% if attribute(object, property) in boolArray %}
{{ attribute(object, property) ? 'Yes' : 'No'}}
{% else %}
{{ attribute(object, property)}}
{% endif%}
</td>
{% endfor %}
</tr>
{% endfor %}
答案 2 :(得分:0)
我更喜欢将翻译组件用于此类工作,例如:
<td>{{ ('label-' ~ attribute(object, property))|trans }}</td>
并使用翻译文件作为示例:
资源/翻译/ messages.en.yml
label-1: yes
label-true: yes
label-0: no
label-false: no
希望这个帮助