Drupal Twig变量初始化错误

问题描述 投票:0回答:1

我试图解决的问题是:我需要一个唯一的(但人类可读的)类名,以便能够根据显示的术语设置分类术语页面的样式。我尝试了几种方法都没有成功,最接近的是:

  1. 使用标准分类术语视图显示页面;
  2. 根据术语的路径别名计算类名;
  3. 修改views-view.html.twig模板,将上面的类名注入到页面上的一个div中。

我的观点-view.html.twig摘录:

{% set tid = view.argument["tid"].value[0] %}
HEREITIS:{{tid}}<br/>
{% set pathclass = path('entity.taxonomy_term.canonical', {'taxonomy_term': 48}) | replace({'/': '-'}) %}
{%
  set classes = [
    dom_id ? 'js-view-dom-id-' ~ dom_id,
    tid,
    pathclass,
  ]
%}
<div{{ attributes.addClass(classes) }}>

它产生了我几乎可以使用的结果:

<!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'sites/bezdatu.test/themes/qq/templates/views/views-view.html.twig' -->
HEREITIS:48<br/>
<div class="view-taxonomy-term contextual-region js-view-dom-id-8549dd661... 48 -category-holiday">

请注意,结果中的两个数字“

48
”都来自
tid
变量,并且“
-category-holiday
”是根据硬编码的“
48
”数字正确计算的。然而,“硬编码”是唯一的工作场景,我完全不知道为什么要改变

path('entity.taxonomy_term.canonical', {'taxonomy_term': 48})

path('entity.taxonomy_term.canonical', {'taxonomy_term': tid})

导致“意外错误”,表示我传递了一个空值:

网站遇到意外错误。稍后再试。

Symfony\Component\Routing\Exception\InvalidParameterException: 路由“entity.taxonomy_term.canonical”的参数“taxonomy_term” 必须匹配“[^/]++”(给出“”)才能生成相应的URL。在 Drupal\Core\Routing\UrlGenerator->doGenerate() (第 202 行 核心/lib/Drupal/Core/Routing/UrlGenerator.php)。

变量不是空的,它是“48”,我唯一的猜测是在计算变量值或视图参数可用之前解析树枝模板。是否有任何修复此方法或任何其他简单方法来添加路径别名作为 css 类名而不需要摆弄 javascript?

drupal twig drupal-views
1个回答
0
投票

也许另一个视图也在渲染?不是分类视图,但仍使用views-view.html.twig 模板的视图?尝试将模板文件重命名为更具体的分类视图,以便该模板仅用于该视图。

© www.soinside.com 2019 - 2024. All rights reserved.