簡體   English   中英

symfony2 twig - 原始和切片過濾器一起不起作用

[英]symfony2 twig - raw & slice filter together doesn't work

在我的twig模板中,我有以下代碼:

<td>{{ object.content|length > 50 ? object.content|raw|slice(0, 50) ~ '...' : object.content|raw  }}</td>

我的對象object.content是這樣的字符串:

<p>Nullam quis risus eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor fringilla.</p>

我想輸出沒有<p>, <b>, ..標簽的字符串。 這就是我添加|raw過濾器的原因。 我也只想輸出整個字符串的50個字符

切片50個字符有效,但他仍然顯示<p>, ..標簽。

現在當我這樣做:

<td>{{ object.content|raw  }}</td>

他顯示沒有<p>標簽的字符串。 但是當我添加切片過濾器時它不起作用...我也嘗試在輸出之前設置一個變量,如下所示:

{% set rawcontent = object.content %}
<td>{{ rawcontent|slice(0, 50) ~ '...'  }}</td>

但同樣的結果......我該如何解決這個問題呢?

striptags應該使用striptags而不是raw

object.content|striptags|slice(0, 50)

小提琴

過濾器專用於此類行為:truncate()它已被禁用但您可以激活它:

services:
   twig.extension.text:
      class: Twig_Extensions_Extension_Text
      tags:
          - { name: twig.extension }

你可以像這樣使用它:

{{ entity.text|striptags|truncate(50, true, "...")|raw }}

最好的用途是當您想要使用HTML內容限制字符時。

  1. 您刪除標記以便注意將其應用於'striptags'
  2. 您將'&eacute'等html實體與'raw'進行插入
  3. 你可以計算和截斷你的字符串的實際大小;)

     {% if entity.contenu|striptags|raw|length > 50 %} {{ entity.contenu|striptags|truncate(50, true, "...")|raw }} {% else %} {{ entity.contenu|striptags|raw }} {% endif %} 

或者您可以像這樣使用它:

{{ entity.text|striptags|length > 50 ? entity.text|striptags|truncate(50, true, "...")|raw  : entity.text|striptags|raw }}

希望有幫助......

我嘗試在各種組合中使用“raw”,“slice”和“〜”。 它不能正確地協同工作(以及“striptags”)。 您只能將“原始”和“切片”一起使用。

所以我發現了其他方法(看起來不好,但它有效):

{{ event.info|length > 300 ? event.info|slice(0,300)|raw : event.info|raw }}
{{ event.info|length > 300 ? '...' : ''}}

我嘗試了Max Lipsky的代碼,然后我注意到它對於像&atilde;這樣的字符&atilde; 然后我修改了一點,現在它似乎工作得很好

{{ event.info|striptags|length > 150 ? event.info|raw|slice(0,150)|raw : event.info|raw }}
{{ event.info|striptags|length > 150 ? '...' : ''}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM