2012-01-25 12 views
12

Estoy implementando una búsqueda alfabética. Mostramos una tabla de Nombres. Quiero resaltar solo aquellos alfabetos, que tienen nombres que comienzan con el alfabeto correspondiente.Ramita: Cómo obtener el primer carácter en una cadena

Estoy perplejo con un problema simple.

Cómo leer el primer carácter de la cadena user.name dentro de twig. He intentado varias estrategias, incluida la operación [0] pero arroja una excepción. Aquí está el código de

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

es una función como "starts_with" en la rama?

Respuesta

30

Desde 1.12.2 ramita puede utilizar first:

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

Para versión anterior se puede utilizar slice:

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

Nota: También puede utilizar esta notación:

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

+0

No responde la pregunta. – amphetamachine

+2

Pregunta cómo obtener la primera letra de una cadena. 'user.name [: 1]' hace exactamente eso. – loostro

Cuestiones relacionadas