Tronquer la chaîne dans les modèles de lame Laravel

Y a-t-il un modificateur tronqué pour les modèles de lame dans Laravel, à peu près comme Smarty?

Je sais que je pourrais juste écrire le php réel dans le template mais je cherche quelque chose d'un peu plus agréable à écrire (n'entrons pas dans tout le php est un débat de moteur de modèle).

Donc, par exemple, je cherche quelque chose comme:

{{ $myVariable|truncate:"10":"..." }}

Je sais que je pourrais utiliser quelque chose comme Twig via composer mais j'espère une fonctionnalité intégrée dans Laravel lui-même.

Sinon est-il possible de créer vos propres modificateurs réutilisables comme Smarty fournit. J'aime le fait que Blade n'exagère pas avec toute la syntaxe mais je pense que truncate est une vraie fonction pratique à avoir.

J'utilise Laravel 4.

44
demandé sur fl3x7 2013-02-22 01:38:54

5 réponses

Dans Laravel 4 & 5, vous pouvez utiliser str_limit, ce qui limite le nombre de caractères dans une chaîne.

{{ str_limit($string, $limit = 150, $end = '...') }}

Pour plus de Laravel des fonctions d'assistance http://laravel.com/docs/helpers#strings

110
répondu Anil Singh 2017-03-01 14:54:27

Laravel 4 A Str::limit qui va tronquer au nombre exact de caractères, et aussi Str::words qui va tronquer sur la limite des mots.

Vérifier:

35
répondu Dustin Graham 2015-01-28 19:56:10

Edit: cette réponse a été publiée pendant la bêta de Laravel 4, lorsque la classe Str n'existait pas. Il y a maintenant une meilleure façon de le faire dans Laravel 4-qui est la réponse de Dustin ci-dessous. Je ne peux pas supprimer cette réponse en raison des règles SO (cela ne me laissera pas)

Blade lui-même n'a pas cette fonctionnalité.

Dans Laravel 3 Il y avait la classe Str-que vous pouviez faire:

{{ Str::limit($myVariable, 10) }}

A ce stade, Je ne crois pas que la classe Str est dans Laravel 4 - Mais voici un port de celui-ci que vous pouvez inclure dans compositeur pour ajouter à votre propre projet

28
répondu Laurence 2017-01-06 12:27:50

, Vous pouvez Définir l'espace de noms comme:

{!! \Illuminate\Support\Str::words($item->description, 10,'....')  !!}
4
répondu Raman Bhasker 2017-07-04 09:11:50

Cela fonctionne sur Laravel 5:

{!!strlen($post->content) > 200 ? substr($post->content,0,200) : $post->content!!}
0
répondu Ofor Emma 2018-07-26 12:45:08