我在一个 Twig 页面中显示了一个富文本 block :
{{ log.entry | raw }}
这会以富文本格式显示它,但是我以前只显示它的前 50 个字符
{{ log.entry[:50] ~ '...'}}
当我以下列任一格式组合两者时:
{{ log.entry[:50] ~ '...' | raw }}
{{ log.entry | raw [:50] ~ '...'}}
它以非 html 格式的方式显示它。关于如何使用 twig 以富文本格式显示大约 50 个字符的文本,有什么想法吗?
最佳答案
Twig 只是一个模板引擎,它不会做你想做的事。您需要做的是更改您提供给它的数据。
假设Log.entry
是一个返回整个日志字符串的方法,你可以创建一个类似的方法,比方说 Log.entry_50
在遇到第一个结束标记之前返回最少 50 个字符。 (假设您希望能够显示整个字符串,而不仅仅是前 50 个字符)
方便的假设:所有结束标签都是相同的,比方说 </X>
.在你的方法中 entry_50
, 从 entry
中获取字符串并执行以下操作:
// assuming $entry holds the entire string
$closing_tag = '</X>';
$end = strpos($entry, $closing_tag, 49) + 4; //add 4 because you want to include te entire closing tag
return substr($entry,0,$end);
现在做 {{ Log.entry_50 |原始 }} 在你的 Twig 模板中。
不太方便的假设:
这里我假设并非所有的结束标签都是相同的,但它们都具有 </*>
的形式.
// assuming $entry holds the entire string
$closing_tag_beginning = '</';
$closing_tag_end = '>';
$end_start = strpos($entry, $closing_tag_beginning, 49);
$end_end = strpos($entry, $closing_tag_end, $end_start);
return substr($entry,0,$end_end);
当然,如果Log.entry
,解决方案会略有不同。是一个变量,但在这种情况下只需添加包含上述解决方案的方法。
关于php - 如何在 Twig 中显示 HTML,同时仍然修剪显示内容的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27315261/