symfony 2 brindille de limiter la longueur du texte et de mettre trois points
Comment puis-je limiter la longueur du texte, par exemple, 50, et de mettre trois points à l'écran?
{% if myentity.text|length > 50 %}
{% block td_text %} {{ myentity.text}}{% endblock %}
{%endif%}
- Les "trois points" est en fait un seul personnage nommé des points de suspension. C'est trois points
...
et c'est un des points de suspension…
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin Twig 1.6
{{ text > 50 ? text|slice(0, 51)|split(' ')|slice(0, -1)|join(' ') ~ '…' : text }}
. Je recommande également à l'aide de la caractère de points de suspension (…
) au lieu de 3 vrais points (...
){{ myentity.text[:50] ~ (myentity.text|length > 50 ? '...') }}
|length
après la premièretext
mais c'est parfait, merci!pourquoi ne pas utiliser twig est tronquée ou wordwrap filtre? Il appartient à extensions twig et lib est une partie de Symfony2.0 tel que je le vois.
...
, le deuxième paramètre doit être réglé àtrue
comme{{ text|truncate(50, true)
require twig/extensions
Un autre est:
Je sais que c'est une très vieille question, mais à partir de rameaux de 1,6 vous pouvez utiliser la tranche de filtre;
La deuxième partie de la tilde est facultative si vous voulez ajouter quelque chose, par exemple les points de suspension.
Edit: Mon mal, je vois le plus voté réponse ne font usage de la tranche de filtre.
@olegkhuss solution nommée UTF-8 Elipsis:
{{ (my.text|length > 50 ? my.text|slice(0, 50) ~ '…' : my.text) }}
text
variable.Une même solution plus élégante consiste à limiter le texte par le nombre de mots (et non pas par le nombre de caractères). Cela empêche vilaine déchirure des traversées (par exemple 'Stackov...').
Voici un exemple où j'réduire uniquement les blocs de texte de plus de 10 mots:
@mshobnr /@olegkhuss solution dans une macro simple:
Exemple d'utilisation:
N. b. - Je importer un template Twig contenant des macros et de les importer comme "outils" comme ceci (Symfony):
Aussi, j'ai remplacé le code html le code de caractère avec le caractère réel, cela ne devrait poser aucun problème lors de l'utilisation de l'UTF-8 comme encodage de fichier. De cette façon, vous n'avez pas à utiliser
|raw
(car cela pourrait entraîner un problème de sécurité).Vous pouvez limiter la manière suivante. La première est l'indice de départ et le second est le nombre de caractères.
Bugginess* dans la nouvelle Drupal 8 capacités d'ici nous a inspiré pour écrire notre propre:
Il prend en considération à la fois les mots et les caractères (*le "mot" dans D8 affichait rien).
J'ai écrit cette simple marco pour le même but, espérons que cela aide:
Exemple d'utilisation #1 (Sortie: "ma longue chaîne ici ..."):
Exemple d'utilisation #2 (Sortie: "plus courte chaîne de caractères!"):
Il est préférable d'utiliser un caractère HTML
…
.