回答:
{{ myentity.text|length > 50 ? myentity.text|slice(0, 50) ~ '...' : myentity.text  }}
Twig 1.6が必要です
{{ text > 50 ? text|slice(0, 51)|split(' ')|slice(0, -1)|join(' ') ~ '…' : text }}。…3つの実際のドット(...)ではなく省略記号()を使用することもお勧めします
                    {{ myentity.text[:50] ~ (myentity.text|length > 50 ? '...') }}
                    |length最初の後に欠けていますtextが、それは完璧です、ありがとう!
                    小枝の切り捨てまたはワードラップフィルターを使用しないのはなぜですか?それは小枝拡張に属し、libは私が見るようにSymfony2.0の一部です。
{{ text|truncate(50) }}
              ...、2つ目のパラメータはに設定されなければならないtrueような{{ text|truncate(50, true)
                    require twig/extensions
                    もう一つは:
{{ myentity.text[:50] ~ '...' }}
              これは非常に古い質問ですが、twig 1.6以降ではスライスフィルターを使用できます。
{{ myentity.text|slice(0, 50) ~ '...' }}
チルダの2番目の部分は、省略記号などを追加する場合にオプションです。
編集:私の悪い、私は最も投票された回答がスライスフィルターを利用することを確認します。
名前付きUTF-8省略記号を使用した@olegkhussソリューション:
{{ (my.text|length > 50 ? my.text|slice(0, 50) ~ '…' : my.text)  }}
text変数を介したHTMLインジェクションが有効になることに注意してください。
                    @mshobnr / @olegkhussソリューションを単純なマクロにした:
{% macro trunc(txt, len) -%}
    {{ txt|length > len ? txt|slice(0, len) ~ '…' : txt }}
{%- endmacro %}
使用例:
{{ tools.trunc('This is the text to truncate. ', 50) }}
Nbマクロを含むTwigテンプレートをインポートし、次のように「ツール」としてインポートします(Symfony):
{% import "@AppBundle/tools.html.twig" as tools -%}
また、html文字コードを実際の文字に置き換えました。これは、ファイルエンコーディングとしてUTF-8を使用する場合は問題ありません。この方法|rawでは、セキュリティの問題が発生する可能性があるため、使用する必要はありません。
さらに洗練された解決策は、テキストを文字数ではなく単語数で制限することです。これにより、醜いティアスルー(「Stackov ...」など)が防止されます。
以下は、10語を超えるテキストブロックのみを短縮する例です。
{% set text = myentity.text |split(' ') %} 
{% if text|length > 10 %} 
    {% for t in text|slice(0, 10) %}
        {{ t }} 
    {% endfor %}
    ...
{% else %}
    {{ text|join(' ') }}
{% endif %}
              以下の方法で制限できます。1つ目は開始インデックスで、2つ目は文字数です。
**{{ results['text'][4:2] }}**
              制限に達した後、切り捨てフィルターを使用して文字列を切り取ります
{{ "Hello World!"|truncate(5) }} // default separator is ...
こんにちは...
2番目のパラメーターをtrueに設定することで、truncateに単語全体を保持するように指示することもできます。最後のWordがセパレータにある場合、truncateはWord全体を印刷します。
 {{ "Hello World!"|truncate(7, true) }} // preserve words
こんにちは、ハローワールド!
セパレーターを変更する場合は、3番目のパラメーターを希望のセパレーターに設定するだけです。
{{ "Hello World!"|truncate(7, false, "??") }} 
こんにちはW ??
私は同じ目的でこのシンプルなマルコを書きました、それが役に立てば幸いです:
{%- macro stringMaxLength(str, maxLength) -%}
    {%- if str | length < maxLength -%}
        {{ str }}
    {%- else -%}
        {{ str|slice(0, maxLength) }}...
    {%- endif -%}
{%- endmacro -%}
使用例#1(出力:「ここに長い文字列...」):
{{ _self.stringMaxLength("my long string here bla bla bla la", 20) }}
使用例#2(出力: "短い文字列!"):
{{ _self.stringMaxLength("shorter string!", 20) }}
              ここで新しいDrupal 8機能のBugginess *は、私たちが独自に作成するように促しました。
<a href="{{ view_node }}">{% if title|length > 32 %}{% set title_array = title|split(' ') %}{% set title_word_count = 0 %}{% for ta in title_array %}{% set word_count = ta|length %}{% if title_word_count < 32 %}{% set title_word_count = title_word_count + word_count %}{{ ta }} {% endif %}{% endfor %}...{% else %}{{ title }}{% endif %}</a>
これは、単語と文字の両方を考慮に入れます(* D8の「単語境界」設定では何も表示されませんでした)。
HTML文字を使用することをお勧めします
{{ entity.text[:50] }}…
              …です。
                    
...あり、これは省略です…