Twig table 使用 craftcms 的问题

Twig table issues using craftcms

我是 craft 和 twig 的新手,我正在尝试访问 neo 矩阵内部的 table 值并开始 运行 进入一些拦截器。我不知道如何正确查询我认为的值。这是我的代码:

{% if row.tableColumn|length %}
  <table>
    {% set policyTable = row.tableColumn.all() %}
    {{ dump(row.tableColumn.all()) }}
    {% for row in policyTable %}
      <thead>
        <tr>
          <th>
            {{ row.col1 }}
          </th>
        </tr>
        <tr>
          <td>
            {{ row.column1 }}
          </td>
        </tr>
      </thead>
    {% endfor %}
  </table>
{% endif %}

这里是供参考的转储(缩写):

array(1) { [0]=> object(craft\elements\MatrixBlock)#2695 (67) {["genericRichTextOnlyListItems"]=> NULL ["tableColumn"]=> string(402) "[{"col1":"THEAD1","col2":"THEAD2","col3":"THEAD3","col4":"THEAD4"},{"col1":"ROW1","col2":"60-75","col3":"15-30","col4":"5-20"},{"col1":"ROW2","col2":"45-55","col3":"35-45","col4":"5-20"},{"col1":"ROW3","col2":"5-15","col3":"75-85","col4":"15-25"}]" } }

我正在尝试访问 table 列中的 col1,我在 craft 后端将其命名为 column1{{ row.col1 }}{{ row.column1 }} 将不起作用。有什么建议吗?

看起来 policyTableMatrix Blocks 的数组。每个数组项(虽然只有一个)在键 tableColumn 下有 table 列,所以你可以尝试这样的事情(我将 policyTable 重命名为 policyTables 因为它是数组):

{% if row.tableColumn|length %}
  <table>
    {% set policyTables = row.tableColumn.all() %}
    {% for row in policyTables[0].tableColumn %}
      <thead>
        <tr>
          <th>
            {{ row.col1 }}
          </th>
        </tr>
        <tr>
          <td>
            {{ row.col2 }}
          </td>
        </tr>
        <!-- etc. -->
      </thead>
    {% endfor %}
  </table>
{% endif %}

或者如果有可能不止一个矩阵块,你可以这样尝试:

{% if row.tableColumn|length %}
  {% set policyTables = row.tableColumn.all() %}
  {% for table in policyTables %}
    <table>
      {% for row in table.tableColumn %}
        <thead>
          <tr>
            <th>
              {{ row.col1 }}
            </th>
          </tr>
          <tr>
            <td>
              {{ row.col2 }}
            </td>
          </tr>
          <!-- etc. -->
        </thead>
      {% endfor %}
    </table>
  {% endfor %}
{% endif %}

在这两种情况下,您可能希望以不同方式处理第一行,因为它似乎是标题行。您可以为此使用 Twig's loop variable。 (可能还有其他一些方法。)