【问题标题】:Parsing and using list item content via Twig通过 Twig 解析和使用列表项内容
【发布时间】:2020-05-20 06:13:19
【问题描述】:

我正在尝试使用 Grav 创建我的下一个网站。我能够做的一件事是使用来自使用模板的 Grav 页面的Grav frontmatter 中提供的数据构建一个无序列表。这是我尝试这样做的方法

---
sectionone:
     listitems: "['Benefit 1','Benefit 2','Benefit 3']"
---

然后在模板中以某种方式执行以下操作

{% block featurelist %}
<ul>
{% set items = {{page.header.sectionone.consumers.benefits|json_decode}} %}
{% for item in {{}} %}
<li>{{item}}</li>
{% endfor %}
</ul>
{% endblock %}

但是,Twig 不喜欢这样,并报告了一个错误

Twig_Error_Syntax 哈希键必须是带引号的字符串、数字、名称或括在括号中的表达式(值“{”的意外标记“标点符号”。

违规行是我的{% set items = ... } 声明。我显然在这里做错了,但我是 Twig 新手,所以我看不到那可能是什么。

【问题讨论】:

  • 您为什么要为此使用 JSON?使用 YAML 不是更有意义吗?
  • 另外,您是否知道您的 YAML 结构和 twig 引用不匹配?

标签: templates twig grav


【解决方案1】:
{% block featurelist %}
<ul>
   {% set items = page.header.sectionone.consumers.benefits|json_decode %}
   {% for item in items %}
      <li>{{item}}</li>
   {% endfor %}
</ul>
{% endblock %}

【讨论】:

    【解决方案2】:

    我最终想通了。 Grav 文档总的来说非常好。但是,page headers/frontmatter 上的文档似乎有些不完整。没有对前端处理器理解的整个语法的完整描述。为了在前面定义一个数组,您需要做的就是以下

    ---
    sectionone:
     benefits: 
        - 'Benefit 1'
        - 'Benefit 2'
        - ...
    ---
    

    本质上是无序列表的标准降价语法。 Grav 的树枝处理器似乎将其转换为 PHP 数组 - 无需解析!

    【讨论】:

    • 能否请您包含此 YAML 结构的配套 Twig 模板代码?
    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    相关资源
    最近更新 更多