我从Twig遇到这种疯狂的行为:我有这个长的名字和姓氏数组(打包成一个字符串),看起来像这样:
[0] "Name1 Surname1"
[1] "Name2 Surname2"
...
[N] "NameN SurnameN"
我希望以下列方式显示每个名称+姓氏的方式操纵此数组:
N. Surname
然后输出将与表中的一些其他数据放在一起,这是所述表的结构:
...
<div class="table-responsive">
<table class="table table-hover table-bordered table-condensed">
<thead class="header">
<tr>
<th class="text-center">Field 1</th>
<th class="text-center">Field 2</th>
<th class="text-center">Field 3</th>
<th class="text-center">Field 4</th>
</tr>
</thead>
<tbody>
{#
data is an associative array with 4 keys
#}
{% for data in parameters.list %}
<tr class="text-center">
<td>...</td>
{% set new_name = data.nameSurnames|split(' ', 2) %}
<td><span class="name">{{new_name[0]|first}}. {{new_name[1]}}</span><br /><small>{{data.keyThree|raw}}</small></td>
<td>...</td>
<td>...</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
...
我可以在上面的代码片段中看到我遵循的程序。
有趣的是,new_name[1]
生成500内部服务器错误,我无法理解原因。
如果在for循环内我做:
{{dump(new_name)}}
输出结果为:
array(2) { [0]=> string(5) "Name1" [1]=> string(8) "Surname1" } array(2) { [0]=> string(5) "Name2" [1]=> string(8) "Surname2" } ... array(2) { [0]=> string(5) "NameN" [1]=> string(8) "SurnameN" }
如果我这样做:
{{dump(new_name[0])}}
输出结果为:
string(5) "Name1" ... string(5) "NameN"
但即使new_name[1]
显示已定义dump(new_name)
,任何涉及new_name[1]
的内容都会产生500错误。
答案 0 :(得分:0)
调查问题,有相同的元素没有姓氏值,所以代码:
{% set new_name = data.nameSurnames|split(' ', 2) %}
<td><span class="name">{{new_name[0]|first}}. {{new_name[1]}}</span><br /><small>{{data.keyThree|raw}}</small></td>
在{{ new_name[1] }}
指令没有很好的解释的情况下失败。
用is defined
控件围绕它:
{% if new_name[1] is defined %}{{new_name[1]}}{%endif%}
解决问题。
签入评论以供进一步参考。
已经对错误消息(Silex框架)
产生怀疑