2012-01-25 79 views
12

Tôi đang thực hiện tìm kiếm theo thứ tự bảng chữ cái. Chúng tôi hiển thị bảng Tên. Tôi muốn làm nổi bật chỉ những bảng chữ cái, có tên bắt đầu bằng bảng chữ cái tương ứng.Twig: Cách lấy ký tự đầu tiên trong một chuỗi

Tôi bị bối rối với một vấn đề đơn giản.

Cách đọc ký tự đầu tiên trong chuỗi user.name trong phạm vi cành. Tôi đã thử một số chiến lược, bao gồm cả hoạt động [0] nhưng nó ném một ngoại lệ. Đây là mã số

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

Có một số chức năng như "starts_with" trong cành không?

Trả lời

30

Kể từ cành lá 1.12.2 bạn có thể sử dụng first:

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

Đối với phiên bản cũ hơn, bạn có thể sử dụng slice:

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

Lưu ý: Bạn cũng có thể sử dụng ký hiệu này:

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

+0

Không trả lời câu hỏi. – amphetamachine

+2

Ông hỏi làm thế nào để có được chữ cái đầu tiên của một chuỗi. 'user.name [: 1]' thực hiện điều đó. – loostro

Các vấn đề liên quan