“Commence par” dans le template Twig
J'ai un template twig où je voudrais tester si un élément commence par une certaine valeur
{% if item.ContentTypeId == '0x0120' %}
<td><a href='?parentId={{ item.Id }}'>{{ item.BaseName }}</a><br /></td>
{% else %}
<td><a href='?{{ item.UrlPrefix }}'>{{ item.LinkFilename }}</a></td>
{% endif %}
La 0x0120 peut regarder comme ça, ou plus complexes comme ce 0x0120D52000D430D2B0D8DD6F4BBB16123680e4f78700654036413b65c740b168e780da0fb4bx. La seule chose que je veux faire est de s'assurer qu'il démarre avec le 0x0120.
La solution idéale serait de le résoudre en utilisant les regex mais je ne suis pas au courant si Brindille prend en charge ce?
Grâce
Vous devez vous connecter pour publier un commentaire.
Oui, Brindille prend en charge les expressions régulières dans les comparaisons: http://twig.sensiolabs.org/doc/templates.html#comparisons
Dans votre cas, il serait:
starts with
maintenant, voir la réponse ci-dessous.Vous pouvez le faire directement dans Twig maintenant:
"Se termine par" est également pris en charge:
Autre pratique mots-clés existent aussi:
Complexes les comparaisons de chaînes:
(Note: les doubles barres obliques inverses sont convertis à une barre oblique inverse par twig)
Chaîne contient:
Voir plus d'informations ici: http://twig.sensiolabs.org/doc/templates.html#comparisons
Vous pouvez simplement utiliser le
slice
filtre. Il suffit de faire:Vous pouvez toujours faire votre propre filtre qui procède à la comparaison.
Que par la docs:
Voici donc une modification de l'exemple.
Je ne suis pas un PHP gars, donc je ne sais pas comment PHP ne regexes, mais la fonction anonyme ci-dessus est conçu pour renvoyer true si
$longString
commence avec$startsWith
. Je suis sûr que vous trouverez que trivial à mettre en œuvre.