Внутренняя ошибка сервера Twig после манипулирования фильтром

1

Я сталкиваюсь с этим сумасшедшим поведением от 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 Internal Server Error, и я не могу понять, почему. Если внутри цикла 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] приведет к ошибке 500, даже если dump(new_name) показывает, что new_name[1] определено..

  • 0
    Можете ли вы повторить проблему на twigfiddle и поделиться ссылкой?
  • 0
    К сожалению, я не могу. Странно то, что та же процедура на другой странице работает правильно ... Единственное реальное отличие состоит в том, что на рабочей странице количество имен и фамилий намного ниже. Но если бы возникла нехватка памяти, я думаю, что {{dump(new_name)}} не удалось бы. Однако вот пример.
Показать ещё 9 комментариев
Теги:
twig
silex

1 ответ

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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню