Twig:如何获取字符串中的第一个字符

问题描述 投票:0回答:3

我正在实施按字母顺序搜索。 我们显示一个名称表。我只想突出显示那些名称以相应字母开头的字母。

我被一个简单的问题难住了。

如何读取 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 %}

twig 中是否有类似“starts_with”的函数?

symfony twig
3个回答
57
投票

从twig 1.12.2开始你可以使用

first
:

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

对于旧版本,您可以使用

slice

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

8
投票

注意: 您也可以使用此符号:

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


0
投票

您还可以使代码更简单,可能是:

{% set character = user.name|first|lower %}

{% if character in 'abcdefghijklmnopqrstuvwxyz0123456789' %}
   <li><a href="{{ path(app.request.get('_route'), { 'search_key' : character}) }}"><span>{{ character }}</span></a></li>
{% endif %}

或者取决于用例:

<li><a href="{{ path(app.request.get('_route'), { 'search_key' : user.name|first|lower}) }}"><span>{{ user.name|first|lower }}</span></a></li>
© www.soinside.com 2019 - 2024. All rights reserved.