Squeak.ru - шаблоны программирования

Ограничить строку Twig

Как я могу ограничить длину строки? Я получаю значение описания из своей базы данных, но хочу отображать только определенное количество символов.

  • Как я могу сделать это в моем шаблоне ветки?
  • Лучше сделать это в моем контроллере?
21.10.2013

Ответы:


1

Попробуйте использовать функцию Truncate:

Во-первых, вам нужно активировать Текстовое расширение:

# app/config/config.yml
  services:
    twig.extension.text:
        class: Twig_Extensions_Extension_Text
        tags:
            - { name: twig.extension }

Затем вы можете вызвать помощника truncate() в своем шаблоне Twig следующим образом:

{{ variable.description | truncate(100, true) }}
21.10.2013
  • Между каналом и именем фильтра не должно быть пробела: |truncate, иначе twig ищет фильтр с именем `truncate` (с предшествующим пробелом). 09.04.2014
  • Прежде всего, мы должны установить библиотеку расширений twig. Это здесь. 21.08.2017

  • 2

    Попробуй это :

    {{ entity.description|striptags|slice(0, 40) }}
    
    1. фильтр striptags удалит теги HTML, это позволит избежать вырезания тега в 2, пример этого базового случая: Text ... <img src="http://examp
    2. фильтр slice обрежет текст, оставив только первые 40 символов.
    21.10.2013
  • Я могу убедиться, что это работает. Я создавал тип контента, называемый выдержкой, и мне нужно было небольшое описание не более 100 символов. 11.01.2017

  • 3

    Я использовал это, чтобы обрезать сообщения в блоге и показать многоточие.

    {{ post.excerpt|striptags|length > 100 ? post.excerpt|striptags|slice(0, 100) ~ '...' : post.excerpt|striptags }}
    

    Если длина выдержки сообщения больше 100 символов, то slice она начинается со 100-го символа, начиная с первого, и добавляется '...' В противном случае показать полный текст..

    18.10.2016
  • striptags используется для вычисления длины строки, но не для усечения строки. Что произойдет, если строка начинается с тега? 11.01.2017
  • Что ты посоветуешь ? 11.01.2017
  • Применить striptags перед вторым slice. 09.02.2017
  • @AL Извините, пропустил это 09.02.2017

  • 4

    Итак, есть несколько вариантов, перечисленных выше, которые не имеют подробностей, поэтому вот немного дополнительной информации:

    {{ variable.description|truncate(100) }}
    

    Это обрежет ваш текст ровно на 100 символов. Проблема здесь в том, что если 100-й символ находится в середине слова, это слово будет сокращено пополам.

    Поэтому, чтобы обойти это, мы можем добавить «true» в вызов truncate:

    {{ variable.description|truncate(100, true) }}
    

    Когда мы это сделаем, truncate проверит, находимся ли мы в середине слова в точке отсечки, и если да, то обрежет строку в конце этого слова.

    Если мы также хотим обрезать строку, которая может содержать некоторый HTML, нам нужно сначала удалить эти теги:

    {{ (variable.description|striptags)|truncate(100) }}
    

    Единственным небольшим недостатком этого является то, что мы потеряем любые символы новой строки (например, встроенные в теги абзаца). Однако, если вы усекаете относительно короткую строку, это, возможно, не будет проблемой.

    09.06.2015

    5

    Я знаю, что это не ответ на ваш конкретный вопрос, так как вы хотите урезать до определенного количества символов, но нечто подобное можно достичь и с помощью CSS. То есть, если вы все еще не поддерживаете IE8 и IE9, есть некоторые предостережения.

    С text-overflow это можно сделать, используя значение эллипсов. Вот пример из CSS-TRICKS:

    .truncate {
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }
    

    Это позволит вам обрезать текст до ширины контейнера, ОДНАКО, для определенного количества символов принятое разрешение TWIG с функцией TRUNCATE работает отлично.

    ССЫЛКА: https://css-tricks.com/snippets/css/truncate-string-with-ellipsis/

    15.08.2016

    6

    Вы можете использовать это расширение Twig:

    Применение

    {{ text|ellipsis(20) }}
    {{ text|ellipsis(20, '///') }}
    

    namespace AppBundle\Twig;
    
    //src/AppBundle/Twig/TwigTextExtension.php
    class TwigTextExtension extends \Twig_Extension
    {
        public function getFilters()
        {
            return array(
                new \Twig_SimpleFilter('ellipsis', array($this, 'ellipsisFilter')),
            );
        }
    
        public function ellipsisFilter($text, $maxLen = 50, $ellipsis = '...')
        {
            if ( strlen($text) <= $maxLen)
                return $text;
            return substr($text, 0, $maxLen-3).$ellipsis;
    
        }
    }
    

    Зарегистрируйте его как сервис в services.yml

    services:
        twig.extension.twigtext:
            class: AppBundle\Twig\TwigTextExtension
            tags:
                - { name: twig.extension }
    
    25.06.2017
    Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...