2013-02-21 9 views
37

Czy istnieje szablony obcinania szablonów ostrzy w programie Laravel, podobne do Smarty?Obcinanie napisów w szablonach ostrzy Laravel

Wiem, że mógłbym po prostu napisać rzeczywisty php w szablonie, ale szukam czegoś ładniejszego do napisania (nie wchodźmy do całości PHP to debata na temat silników szablonowych).

Tak na przykład szukam czegoś podobnego:

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

Wiem, że mógłbym użyć czegoś podobnego Gałązka przez kompozytora, ale mam nadzieję zbudowany w funkcjonalności w samej laravel.

Jeśli nie, można utworzyć własne modyfikatory wielokrotnego użytku, takie jak Smarty. Podoba mi się fakt, że Blade nie przesadza ze wszystkimi składni, ale myślę, że obcięcie to naprawdę przydatna funkcja.

Używam laravel 4.

+0

co laravel 5? –

+1

@HosMercury Dla L5 patrz http://stackoverflow.com/questions/29281013/how-to-use-illuminate-support-strslug-in-my-laravel-5-app – fl3x7

Odpowiedz

27

Edit: To jest odpowiedź została wysłana podczas laravel 4 beta, kiedy klasa Str nie istnieje. Teraz jest lepszy sposób na zrobienie tego w Laravel 4 - co jest odpowiedzią Dustina poniżej. Nie mogę usunąć tej odpowiedzi ze względu na reguły SO (to nie pozwól mi)

Samo ostrze nie ma tej funkcji.

W laravel 3 było klasę str - co może zrobić:

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

Na tym etapie nie wierzę klasa Str jest w laravel 4 - but here is a port of it that you can include in composer dodać do swojego projektu

+0

Dzięki za sugestię, wydaje się, że będę musiał wejdź i użyj portów Meido lol – fl3x7

+0

Obecnie Laravel 4 ma klasę Str. Zobacz odpowiedź Dustina Grahama. – trm42

+0

Tak - zgadza się. Kiedy pierwotnie wysłałem tę odpowiedź, było to podczas Laravel 4 Beta, kiedy klasa Str nie istniała – Laurence

34

Laravel 4 ma Str::limit, które zostanie obcięte do dokładnej liczby znaków, a także Str::words, które zostanie obcięte na granicy wyrazów.

Check out:

+0

Czy wiesz, że odpowiednik 'Str :: words' istnieje w Larvel 5.2? – Jiedara

+1

Nie. Wygląda na to, że ogranicza teraz liczbę słów, a nie znaków. : // github.com/laravel/framework/blob/5.2/src/Illuminate/Support/Str.php # L182 –

+0

Tego właśnie szukałem! Dzięki ! – Jiedara

90

W laravel 4 & 5, można użyć str_limit, który ogranicza liczbę znaków w ciągu.

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

Więcej laravel funkcji pomocniczych http://laravel.com/docs/helpers#strings

+0

działa ładnie. dzięki – frostymarvelous

+11

To nadal działa w laravel 5 – Szenis

+0

to jest poprawna odpowiedź – Leon

1

można ustawić nazw takich jak:

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