Почему Twig не может использовать переменную как индекс для массива, когда я использую set as capture? - PullRequest
5 голосов
/ 06 июля 2011

В Twig я могу сделать набор двумя способами

{% set car = 'Honda' %}

или

{% set car %}Honda{%endset%}

где 2-й способ - «захват»

Когда я пытаюсь использовать переменную в качестве индекса в массиве например,

{{ cars[car].wheels | length }}

Второй способ установки переменной не будет работать. Почему?

Ответы [ 2 ]

5 голосов
/ 06 июля 2011

Включить режим отладки в Twig. Используйте расширение отладки для просмотра переменной в 2 сценариях.

Первый путь

{% set car = 'Honda' %}
{% debug car %} 

покажет вам, что автомобиль все еще является строкой Honda

однако, 2-й способ

{% set car %}Honda{%endset%}
{% debug car %}

покажет вам, что машина теперь

Объект Twig_Markup ([content: protected] => автомобиль)

Так что не используйте захват как способ установки переменной, если вы хотите использовать ее в качестве ключа или индекса в массиве.

Обновление: для версии Twig больше 1.5 используйте дамп для замены отладки

например:

{% set car = 'Honda' %}
{% debug car %} 

например:

{% set car %}Honda{%endset%}
{% debug car %}
2 голосов
/ 25 мая 2013

Вы также можете использовать 2-й способ, как это (вы должны обрезать переменную автомобиля):

{% set car %}Honda{%endset%}

{{ cars[car|trim].wheels | length }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...