0

我在充满其他数组的单独会话变量中有 2 个单独的数组。我正在尝试根据另一个属性输出的值提取数组的一个属性。它本质上是一个状态代码(具有其他属性)和另一个字典。

它们看起来像这样:

字典数组

%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;博士

我需要根据状态数组给出的“状态:”从字典数组中提取名称

4

2 回答 2

1

好的,所以你在这段代码中有很多问题。让我们从数据开始。

您提供的数据似乎是 JSON 数组的形式,而不是 PHP 数组。因此,您必须先使用json_decode.

但这些数组不是有效的 JSON。为了使它们成为有效的 JSON,每个键和值都需要在它们周围加上双引号,即,"Id": "54"而不是Id: '54'.

然后,您必须使用 将这些变量设置到会话中$this->getRequest()->getSession()->set('statusArray', $statusArray);,我假设您做得很好。

接下来,您的树枝模板的逻辑不正确。由于您在外部数组中有多个关联数组,因此 for 循环中的每个项目都是与大括号 {} 中包含的 JSON 对象相对应的关联数组之一。

将完成您想要的代码如下:

{% 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 回答