symfony 在twig中使用merge()时,键值被“key”替换

hzbexzde  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(111)

我尝试将键值对添加到一个数组中,所有这些属性的当前值都不是以''开头。出于某种原因,合并将“key”(即slug)的值替换为字符串“key”。
例如,当slug是key不是以'
'开头的唯一属性时,

key = slug
value = something

其行为如下:

{% for key,value in app.request.attributes.all %}
    {% if '_' != key | slice(0, 1) %}
        {{ dump(key) }}  // string(4) "slug"
        {% set params = params | merge({ key : value}) %}
        {{ dump(key) }} // string(4) "slug"
    {% endif %}
{% endfor %}
{{ dump(params) }} // array(1) { ["key"]=> string(9) "something" }

我已经添加了转储返回的内容。
最终转储返回

array(1) { ["key"]=> string(9) "something" }

当我期待

array(1) { ["slug"]=> string(9) "something" }

我会说这是一个类似于Twig forgets array-keys的问题,但这个问题的结论是这是一个mongodb问题,我没有使用它。我正在处理请求的属性。
出于某种原因,merge({ key:value})的行为与merge({ 'key':value})相同。

inn6fuwd

inn6fuwd1#

你需要用括号来 Package 你的变量,以便能够将它用作键。

{% set params = params | merge({ (key) : value}) %}
dgtucam1

dgtucam12#

对于数字键,您可以使用merge过滤器在此过程中丢失密钥。
我找不到任何关于'+'运算符应用于数组的文档,但它在这种情况下工作得很好:

{% set array = {(1): 2} + array %}

来源:https://github.com/twigphp/Twig/issues/2741#issuecomment-417445042

相关问题