Строка обрезания в шаблонах лезвий Laravel
Есть ли урезанный модификатор для шаблонов клипов в Laravel, в значительной степени похожий на Smarty?
Я знаю, что могу просто написать фактический php в шаблоне, но я ищу что-то приятнее писать (не вмешивайся во весь PHP - это обсуждение шаблонов).
Итак, например, я ищу что-то вроде:
{{ $myVariable|truncate:"10":"..." }}
Я знаю, что могу использовать что-то вроде Twig через композитор, но я надеюсь на встроенную функциональность самого Laravel.
Если нет, то можно создать свои собственные многоразовые модификаторы, такие как Smarty. Мне нравится тот факт, что Blade не переполняет весь синтаксис, но я думаю, что truncate - это действительно удобная функция.
Я использую Laravel 4.
Ответы
Ответ 1
В Laravel 4 и 5 вы можете использовать str_limit
, который ограничивает количество символов в строке.
{{ str_limit($string, $limit = 150, $end = '...') }}
Для дополнительных вспомогательных функций Laravel http://laravel.com/docs/helpers#strings
Ответ 2
Laravel 4 имеет Str::limit
, который усекает до точного числа символов, а также Str::words
, который будет усекать на границе слова.
Отъезд:
Ответ 3
Изменить: этот ответ был опубликован во время бета-тестирования Laravel 4, когда класса Str не существует. Теперь есть лучший способ сделать это в Laravel 4 - это Дастин ответ ниже. Я не могу удалить этот ответ из-за правил SO (он не позволит мне)
Сам блейд не обладает этой функциональностью.
В Laravel 3 был класс Str, который вы могли бы сделать:
{{ Str::limit($myVariable, 10) }}
На этом этапе я не считаю, что класс Str находится в Laravel 4 - но вот его порт, который вы можете включить в композитор. добавить в свой проект
Ответ 4
Вы можете задать пространство имен так:
{!! \Illuminate\Support\Str::words($item->description, 10,'....') !!}
Ответ 5
Чтобы ваш код был СУХИМ, а если ваш контент взят из вашей модели, вы должны принять немного другой подход. Отредактируйте свою модель следующим образом (протестировано в L5.8):
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
class Comment extends Model
{
public function getShortDescriptionAttribute()
{
return Str::words($this->description, 10, '...');
}
}
?>
Тогда по вашему мнению:
{{ $comment->short_description }}
Ответ 6
Это работает на Laravel 5:
{!!strlen($post->content) > 200 ? substr($post->content,0,200) : $post->content!!}
Ответ 7
Вы можете установить ограничение строки, как показано ниже:
<td>{{str_limit($biodata ->description, $limit = 20, $end = '...')}}</td>
Он будет отображать только 20 букв, включая пробелы и заканчивается....
Пример изображения ![It shows the example of string limit]()
Ответ 8
Обновление Laravel 5.8
{!! Str::limit('Lorem ipsum dolor sit amet, consectetur adipisicing elit', 10, ' ...') !!}
Выход
Lorem ipsu ...