Twig模板修改数组指定索引元素值报错,求解决方案
解决Jinja2中修改数组指定元素的报错问题
你这段代码里的{% set explode_field_id[reqValue] = data.field_details[dependent_field] %}写法是错误的——Jinja2中的列表属于不可变类型,不能直接通过索引赋值修改元素,这就是触发Unexpected token "punctuation" of value "["报错的核心原因。
修正方案
Jinja2中修改列表元素的正确方式是通过切片拼接生成新列表,具体代码调整如下:
{% set explode_field_id = data.field_id|split('-') %} {% set explode_field_id_length = explode_field_id|length %} {% set reqValue = explode_field_id_length - 1 %} {# 替换原赋值行,通过切片拼接生成新列表 #} {% set new_explode_field_id = explode_field_id[:reqValue] + [data.field_details[dependent_field]] + explode_field_id[reqValue+1:] %} {% set dependent_field_id = new_explode_field_id|join('-') %}
代码说明
explode_field_id[:reqValue]:提取原列表中索引reqValue之前的所有元素[data.field_details[dependent_field]]:把要替换的新元素包装成列表(保证拼接类型一致)explode_field_id[reqValue+1:]:提取原列表中索引reqValue之后的所有元素- 三者拼接后得到的
new_explode_field_id就是修改指定位置元素后的新列表
内容的提问来源于stack exchange,提问作者Manav Chauhan
相关产品推荐
相关产品推荐

