在 Drupal 8 视图模板中应用树枝过滤器


Applying twig filters in Drupal 8 Views Template

我正在使用树枝在Drupal 8中构建一个主题视图。 我想在视图未格式化.html.twig 模板中的 row.content 变量上使用树枝过滤器。

似乎row.content是一个数组,因此twig的字符串操作不起作用。但是,它会作为字符串打印到页面上(视图只是分类术语的列表)。

我想做的是将输出进行粗略化,以便带有空格的分类术语可以具有有效的 href。请参阅下面代码中的替换筛选器。

<ul class="nav nav-tabs" role="tablist">
{% for row in rows %}
  <li role="presentation" class="{{loop.first ? 'active' : ''}}">
    <a href="#{{row.content | replace({" ", "-"})}}" aria-controls="{{row.content}}" role="tab" data-toggle="tab">{{row.content}}</a>
  </li>
{% endfor %}
</ul>

这只会输出<a href="#">. 有谁知道如何访问在树枝插值期间输出的原始文本值?

谢谢!

我自己遇到了这个问题,这很困难,因为 kint 和转储在视图上崩溃。不过,有一个快速的解决方法可以获取位,将其放在 twig 视图样式模板中的 {% for 行 %} 下。

<ol>
{% for key, value in row.content %}
  <li>{{ key }}</li>
{% endfor %}
</ol>  

加载页面并为您提供要查看的键,我使用以下 dump 命令检查了它们,只是添加到下面进行测试。

{{ dump(row.content['#row']) }}

上面的转储显示了 #row 中的所有货物,我在那里挖掘并在_entity中找到了我想要的字段(可能对您来说有所不同),然后我想用破折号替换空格并强制小写。

过去 row.content['#row'] 的所有内容对您来说都可能不同,您需要使用上面提到的 dump 命令对数组进行一些挖掘。下面是让我得到我想要的那条线。

{{ row.content['#row']._entity.title[0].value|replace(' ', '-')|lower }}

下面是树枝模板示例。对于文件名,将视图名块-3更改为您的设置。

视图-视图-

未格式化--视图名称--块-3.html.twig

{% for row in rows %}
    {%
        set row_classes = [
            default_row_class ? 'views-row',
            'something',
            'kint-cant',
        ]
    %}
    {# My field value unformatted #}
    <!-- {{ row.content['#row']._entity.title[0].value }} --> 
    <section{{ row.attributes.addClass(row_classes) }} id="{{ row.content['#row']._entity.title[0].value|replace(' ', '-')|lower }}">
        {{ row.content }}
    </section>
{% endfor %}

我确定还有很多其他方法可以做到这一点,但它对我来说是一种在样式模板中打印出视图字段的快速解决方案,这非常有用。