11

'_'で始まらないすべての属性の現在の値を使用して、キー値のペアを配列に追加しようとしています。何らかの理由で、マージは「key」(つまりslug)の値を文字列「key」に置き換えます。

たとえば、slugが「_」で始まらないキーを持つ唯一の属性である場合、

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が配列キーを忘れるのと同様の問題だと思いますが、その質問の結論は、mongodbの問題であり、私はそれを使用していません。リクエストの属性を使用しています。

何らかの理由で、merge({key:value})はmerge({'key':value})として動作しています。

4

2 に答える 2

30

変数をキーとして使用できるようにするには、変数を括弧で囲む必要があります。

{% set params = params | merge({ (key) : value}) %}
于 2013-03-16T21:32:53.523 に答える
2

数字キーを使用すると、m̀erge`filterを使用して、プロセス中にキーを失う可能性があります。

配列に適用された「+」演算子に関するドキュメントは見つかりませんでしたが、この場合はうまく機能します。

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

ソース:https ://github.com/twigphp/Twig/issues/2741#issuecomment-417445042

于 2020-07-03T10:37:39.410 に答える