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 }}
将不起作用。有什么建议吗?
看起来 policyTable
是 Matrix 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。 (可能还有其他一些方法。)
我是 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 }}
将不起作用。有什么建议吗?
看起来 policyTable
是 Matrix 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。 (可能还有其他一些方法。)