首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Twig中的text_long字段输出HTML?

如何从Twig中的text_long字段输出HTML?
EN

Drupal用户
提问于 2016-12-27 12:50:06
回答 3查看 9.6K关注 0票数 2

如果我想从Drupal 8中的twig实体字段输出html,那么|raw过滤器的替代方案是什么?

根据这张票的说法,|raw应该避免,但我不知道如何在twig中使用他们推荐的票据(Safestring/SafeMarkup)。

我有一个自定义内容实体,其字段定义如下:

代码语言:javascript
复制
$fields['internal_description'] = BaseFieldDefinition::create('text_long')
  ->setLabel(t('Internal description'))
  ->setSettings(array(
    'max_length' => 1500,
  ))

该字段存储来自CKEditor实例的HTML。现在,我想将它输出为一个小枝模板中的HTML。目前如果我打电话

代码语言:javascript
复制
{{  event.getExternalDescription }}

我像预期的那样得到转义的HTML,但是这不是我想要的。如果我做了

代码语言:javascript
复制
{{  event.getExternalDescription | raw }}

我得到了我想要的,也就是未转义的HTML。但是,由于在本例中没有以任何方式检查,所以我想知道如何使这个输出安全,并且仍然允许我的用户使用CKEditor输入内容?

EN

回答 3

Drupal用户

回答已采纳

发布于 2016-12-27 13:20:48

通常,您会在UI中配置字段的显示。

您可以使用render元素processed_text在代码中这样做。

代码语言:javascript
复制
  $build = [
    '#type' => 'processed_text',
    '#text' => '<p>Hello world</p>',
    '#format' => 'full_html',
  ];

小枝

在twig中,您将使用以下代码而不是极其不安全的{{ event.getExternalDescription | raw }}

代码语言:javascript
复制
  {% set build = {
    '#type':   'processed_text',
    '#text':    event.getExternalDescription,
    '#format': 'full_html',
  } %}

  {{ build }}

文本格式的安全性取决于文本过滤器的配置和字段的内容。将相同的安全性考虑因素应用于ckeditor中的文本格式。

票数 10
EN

Drupal用户

发布于 2018-06-13 16:14:42

这种用法适用于我,可以在节点上的段落实体中进行长文本wysiwyg字段的呈现:

代码语言:javascript
复制
{{ item.entity.field_innerfieldname.value|t() }}

特别是在节点中,field_paragraph_items是段落元素的集合:

代码语言:javascript
复制
{% for item in content['#node'].field_paragraph_items %}

花了一段时间才弄明白。twig处理器\t()并没有被广泛地宣传。

另请参阅:

票数 2
EN

Drupal用户

发布于 2021-12-15 16:14:30

在@HongPong回复之后(抱歉,我还不能发表评论),我发现以下几点对我是有帮助的:

代码语言:javascript
复制
{{ node.body.value|t }}

注意,在“t”之后没有吹嘘!

在我使用简单的{{ node.body.value }}之前,我将HTML标记解析到网页上(例如'<p>'),而在网页中,代码被转义为AKA编码(例如'<p>')。

票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/223967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档