【问题标题】:What's the issue in accessing associative array element in smarty in following scenario?在以下场景中访问 smarty 中的关联数组元素有什么问题?
【发布时间】:2014-07-22 12:54:01
【问题描述】:

我已经关注了分配给 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}

【问题讨论】:

  • 如果$value 是一个数组,您将需要使用$value.THE_INDEX_YOU_NEED.applicable_states...foreach 元素。

标签: arrays smarty associative-array smarty2


【解决方案1】:

在 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}

输出如下:

所有国家

【讨论】:

    【解决方案2】:

    我已经有一段时间没有聪明了,但我认为您需要先将数组分配给一个变量才能访问数组的元素:

    {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}
    

    【讨论】:

      猜你喜欢
      • 2019-08-18
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      相关资源
      最近更新 更多