2013-02-21 5 views
37

Gibt es einen Abschneide-Modifizierer für die Blade-Vorlagen in Laravel, ähnlich wie Smarty?Zeichenfolge in Laravel-Blade-Vorlagen abschneiden

Ich weiß, ich könnte nur die tatsächliche PHP in der Vorlage schreiben, aber ich suche nach etwas ein bisschen schöner zu schreiben (Lassen Sie uns nicht in das ganze PHP ist eine Templating-Engine-Debatte).

So zum Beispiel suche ich nach so etwas wie:

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

Ich weiß, dass ich so etwas wie Zweig über Komponisten verwenden könnte, aber ich bin die Hoffnung, in Laravel in Funktionalität selbst gebaut.

Wenn nicht, ist es möglich, eigene wiederverwendbare Modifikatoren wie Smarty zu erstellen. Ich mag die Tatsache, dass Blade nicht mit der ganzen Syntax übertrieben ist, aber ich denke, dass truncate eine wirklich praktische Funktion ist.

Ich verwende Laravel 4.

+0

was Laravel 5? –

+1

@HosMercury Für L5 siehe http://stackoverflow.com/questions/29281013/how-to-use-luminate-support-strslug-in-my-laravel-5-app – fl3x7

Antwort

27

Edit: Diese Antwort wird während der Laravel 4 Beta veröffentlicht wurde, wenn Str Klasse nicht existierte. Es gibt jetzt einen besseren Weg, es in Laravel 4 zu tun - was Dustins Antwort unten ist. Ich kann diese Antwort aufgrund von SO-Regeln nicht löschen (es lässt mich nicht)

Blade selbst hat diese Funktionalität nicht.

In Laravel 3 war es die Str Klasse - die Sie tun können:

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

In diesem Stadium glaube ich nicht, die Str Klasse in Laravel ist 4-but here is a port of it that you can include in composer zu Ihrem eigenen Projekt hinzuzufügen

+0

Danke für den Vorschlag, scheint ich muss höhle ein und benutze die Meido-Ports lol – fl3x7

+0

Heutzutage hat Laravel 4 die Str-Klasse. Siehe Dustin Grahams Antwort. – trm42

+0

Ja - das ist richtig. Als ich diese Antwort ursprünglich gepostet habe, war es während Laravel 4 Beta, als die Str-Klasse nicht existierte. – Laurence

34

Laravel 4 hat Str::limit, die auf die genaue Anzahl der Zeichen abgeschnitten wird, und auch Str::words, die auf Wortgrenze abgeschnitten wird.

Check out:

+0

Wissen Sie, ob in Larvel 5.2 ein Äquivalent von Str :: words existiert? – Jiedara

+1

Nein. Sieht so aus, als würde die Anzahl der Wörter jetzt begrenzt, nicht die Zeichen. Https : // GitHub.com/laravel/framework/blob/5.2/src/Illuminate/Unterstützung/Str.php # L182 –

+0

Das war, was ich suchte! Danke ! – Jiedara

90

In Laravel 4 & 5 können Sie str_limit verwenden, die die Anzahl der Zeichen in einer Zeichenfolge begrenzt.

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

Weitere Laravel Helferfunktionen http://laravel.com/docs/helpers#strings

+0

funktioniert gut. Danke – frostymarvelous

+11

Dies funktioniert immer noch in Laravel 5 – Szenis

+0

Dies ist die richtige Antwort – Leon

1

Sie den Namespace wie einstellen:

{!! \Illuminate\Support\Str::words($item->description, 10,'....') !!}