duan246558
2014-01-07 07:26
浏览 119
已采纳

如何在smarty模板中访问数组的键和值?

I'm assigning an array named $enquiries_labels from php file to a smarty template file. If I print the array in PHP file it's output is as follows:

Array
(
    [0] => New Enquiry
    [1] => Retail Enquiry
    [2] => Feedback
    [3] => Payment Query
    [4] => Package Query
    [5] => Test Query
)

Now after assigning this array to a smarty file I want to access these values in a select HTML control. For it I need to use foreach loop construct of smarty template engine. If a pre-selected value is matching with the key from array then I'll keep that value selected. For achieving this I tried below code, but it didn't work for me. Can anyone help me in this regard please? For your reference I'm putting below the code I tried in smarty template:

<select name="contact_label" id="contact_label"> 
{if $enquiries_labels}
                  {foreach from=$enquiries_labels item=label}
                    <option value="{$label.key}" {if $data.key == $label.key} selected="selected" {/if}>{$label.value}
                    </option>
                  {/foreach}
                {/if}
      </select>

Thanks for spending some of your valuable time in understanding my issue.

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • douhui3760 2014-01-07 07:31
    已采纳

    Use key in your foreach:

    {foreach from=$enquiries_labels item=label key=key}
              <option value="{$key}" {if $data.key == $key} selected="selected" {/if}>{$label}
              </option>
    {/foreach}
    

    It's all there in the documentation.

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • duanbiao4035 2014-01-07 07:32

    Use the key attribute.

    {foreach from=$enquiries_labels item="label" key="key"}
        <option value="{$key}"{if $data.key == $key} selected="selected"{/if}>{$label}</option>
    {/foreach}
    
    评论
    解决 无用
    打赏 举报
  • donglu9872 2016-05-17 14:22

    Smarty 3 foreach construction is like this

    {foreach $products as $p}
        {$p@key}: {$p}
    {/foreach}
    
    评论
    解决 无用
    打赏 举报
  • dragon8837 2019-01-25 11:17

    this also works

    {foreach $products as $product}
        key: {$product@key} -> value: {$product@value} 
    {/foreach}
    
    {$product@value} = {$product}
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题