В чем проблема с доступом к элементу ассоциативного массива в smarty в следующем сценарии?

Я следую за заголовком массива $value, который я присвоил умному шаблону.

 Array
        (
            [id] => 175
            [start_date] => 2014-07-01
            [end_date] => 2014-07-31
            [count] => 3
            [rebate_type_id] => 2
            [created_at] => 1406031299
            [updated_at] => 1406031299
            [applicable_states] => Array
                (
                    [0] => Array
                        (
                            [state_id] => 0
                            [rebate_id] => 175
                            [state_name] => All States
                        )

                )
            [manufacturer_id] => 49
            [company_name] => Blue Nun
            [manufacturer_image_path] => 
        )

Для доступа к элементу внутреннего массива я написал следующий код, но он не работает. Не могли бы вы исправить ошибку, которую я сделал в приведенном ниже коде?

{if $value.appplicable_states.0.state_name == 'All States'}
                  All States
                {/if}

person PHPFan    schedule 22.07.2014    source источник
comment
Если $value является массивом, вам нужно будет использовать либо элемент $value.THE_INDEX_YOU_NEED.applicable_states..., либо элемент foreach.   -  person Salem    schedule 22.07.2014


Ответы (2)


Когда в PHP вы сделали такое назначение (я упростил массив):

$data= array('applicable_states' => array(0 => array('state_name' => 'All States')));
$smarty->assign('value',$data);

в Smarty вы можете использовать:

{if $value.applicable_states.0.state_name =='All States'}
All States
{else}
Not All States
{/if}

Выход для этого:

Все штаты

person Marcin Nabiałek    schedule 22.07.2014

Прошло некоторое время с тех пор, как я умничал, но я думаю, что вам нужно сначала присвоить массивы переменной, чтобы иметь доступ к элементам массива:

{assign var=states value=$value.appplicable_states}
{$states[0].state_name}

или более вероятно:

{assign var=states value=$value.appplicable_states}
{foreach from=$states item=state}
    {$state.state_name}
{/foreach}
person Danack    schedule 22.07.2014