2012-01-25 10 views
12

Я реализую алфавитный поиск. Мы показываем таблицу имен. Я хочу выделить только те алфавиты, имена которых начинаются с соответствующего алфавита.Twig: Как получить первый символ в строке

Я столкнулся с простой проблемой.

Как прочитать первый символ в строке user.name в ветке. Я пробовал несколько стратегий, включая операцию [0], но выдает исключение. Вот код

{% for i in ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0-9'] %} 
     {% set has_user_starting_with_alphabet = false %} 
     {% for user in pagination %} 
       {% if user.name[0]|lower == i %} 
         {% set has_user_starting_with_alphabet = true %} 
       {% endif %} 
     {% endfor %} 
     {% if has_user_starting_with_alphabet %} 
       <li><a href="{{ path(app.request.get('_route'), { 'search_key' : i}) }}"><span>{{ i }}</span></a></li> 
     {% endif %} 
{% endfor %} 

Есть ли некоторая функция, как «starts_with» в ветке?

ответ

30

С веточку 1.12.2 вы можете использовать first:

{% if user.name|first|lower == i %} 

Для старой версии вы можете использовать slice:

{% if user.name|slice(0, 1)|lower == i %} 
4

Примечание: Вы можете также использовать эти обозначения:

{% if user.name[:1]|lower == i %}

+0

Не отвечает на вопрос. – amphetamachine

+2

Он спрашивает, как получить первую букву строки. 'user.name [: 1]' делает exacly это. – loostro

Смежные вопросы