Подтвердить что ты не робот

Строка обрезания в шаблонах лезвий Laravel

Есть ли урезанный модификатор для шаблонов клипов в Laravel, в значительной степени похожий на Smarty?

Я знаю, что могу просто написать фактический php в шаблоне, но я ищу что-то приятнее писать (не вмешивайся во весь PHP - это обсуждение шаблонов).

Итак, например, я ищу что-то вроде:

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

Я знаю, что могу использовать что-то вроде Twig через композитор, но я надеюсь на встроенную функциональность самого Laravel.

Если нет, то можно создать свои собственные многоразовые модификаторы, такие как Smarty. Мне нравится тот факт, что Blade не переполняет весь синтаксис, но я думаю, что truncate - это действительно удобная функция.

Я использую Laravel 4.

4b9b3361

Ответ 1

В Laravel 4 и 5 вы можете использовать str_limit, который ограничивает количество символов в строке.

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

Для дополнительных вспомогательных функций Laravel http://laravel.com/docs/helpers#strings

Ответ 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 ...