过滤器操作后Twig内部服务器错误

时间:2015-08-27 15:43:31

标签: php twig silex

我从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错误。

1 个答案:

答案 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框架)

产生怀疑