0

他の配列でいっぱいの個別のセッション変数に 2 つの個別の配列があります。別の値の出力に基づいて、配列の 1 つの属性を取り出そうとしています。これは基本的に、1 つの状態コード (他の属性を含む) と、他の属性の辞書です。

それらは次のようになります。

ディクショナリ配列

%array% [ { Id: '22', Name: 'Foo', Type: 'FooFoo', Description: 'More Foo', Enabled: 'true', Priority: 'number here' },
{ Id: '23', Name: 'Bar', Type: BarBar, Description: 'oh look more bars', Enabled: 'true', Priority: 'number here' },{...}]

ステータス配列:

%array% [{ Id: '54', Name: 'Name goes here', Status: '23', BrandName: 'Brand'}],{...} }]

私がやろうとしているのは次のようなものです

{%for Id in app.session.get('statusArray')%}
   {% if Id.Status in app.session.get('dictionaryArray')%}
      {{app.session.get('dictionaryArray').Name}}
   {% endif %}
{%endfor%}

私も試してみました

{{attribute(app.session.get('dictionaryArray').Name, Id.Status)}}

またはその趣旨の何か。

TL;DR

ステータス配列によって指定された「ステータス:」に基づいて、ディクショナリ配列から名前を引き出す必要があります。

4

2 に答える 2

1

さて、このコードには多くの問題があります。データから始めましょう。

あなたが提供したデータは、PHP 配列ではなく、JSON 配列の形式のようです。そのため、最初に を使用してデコードする必要がありますjson_decode

しかし、これらの配列は有効な JSONではありません。それらを有効な JSON にするには、各キーと値を二重引用符で囲む必要があり"Id": "54"ますId: '54'

次に、これらの変数を を使用してセッションに設定$this->getRequest()->getSession()->set('statusArray', $statusArray);する必要があります。これはうまくやっていると思います。

次に、小枝テンプレートのロジックが正しくありません。外側の配列内に複数の連想配列があるため、for ループ内の各項目は、中かっこ {} で囲まれた JSON オブジェクトに対応する連想配列の 1 つです。

あなたが望むことを成し遂げるコードは次のとおりです:

{% for status in app.session.get('statusArray') %}
    {% for dict in app.session.get('dictionaryArray') %}
        {% if status.Status == dict.Id %}
            {{ dict.Name }}
        {% endif %}
    {% endfor %}
{% endfor %}
于 2012-10-03T17:59:22.937 に答える
0

これが機能することがわかりました...

phpファイルで:

$session = $this->get('session');
$session->set('user',array(
    'nickname' => 'Joe'
));

小枝テンプレートで:

<p>{{ app.session.get('user')['nickname'] }}</p>

ただし、キーが存在しない場合は、例外がスローされます。

于 2016-06-30T15:35:43.887 に答える