2012-01-25 10 views
12

Wdrażam wyszukiwanie alfabetyczne. Wyświetlamy tabelę nazw. Chcę wyróżnić tylko te alfabety, których nazwy zaczynają się od odpowiedniego alfabetu.Gałązka: Jak uzyskać pierwszy znak w ciągu znaków

Jestem zaskoczony prostym problemem.

Jak odczytać pierwszy znak w nazwie użytkownika string.name w gałązce. Próbowałem różnych strategii, w tym operacji [0], ale zgłasza wyjątek. Oto kod

{% 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 %} 

Czy istnieje jakaś funkcja jak „starts_with” w gałązki?

Odpowiedz

30

Od gałązka 1.12.2 można użyć first:

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

Dla starszej wersji można użyć slice:

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

Uwaga: Możesz także użyć tego określenia:

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

+0

Nie odpowiada na pytanie. – amphetamachine

+2

Pyta, jak uzyskać pierwszą literę ciągu. 'user.name [: 1]' robi to samo. – loostro

Powiązane problemy