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

时间:2014-01-07 07:26:18

标签: php arrays foreach smarty

我正在将一个名为$enquiries_labels 的数组从php文件分配到一个智能模板文件。如果我在PHP文件中打印数组,它的输出如下:

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

现在,在将此数组分配给smarty文件之后,我想在选择HTML控件中访问这些值。为此,我需要使用智能模板引擎的foreach循环结构。如果预先选择的值与数组中的键匹配,那么我将保持选择该值。为了实现这一点,我尝试了下面的代码,但它对我不起作用。有人可以帮我这方面吗?作为参考,我把它放在我在smarty模板中尝试的代码之下:

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

感谢你花了一些宝贵的时间来理解我的问题。

5 个答案:

答案 0 :(得分:10)

key

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

这就是documentation中的所有内容。

答案 1 :(得分:5)

Smarty 3 foreach构造就像这样

{foreach $products as $p}
    {$p@key}: {$p}
{/foreach}

答案 2 :(得分:2)

使用key属性。

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

答案 3 :(得分:1)

这也有效

{foreach $products as $product}
    key: {$product@key} -> value: {$product@value} 
{/foreach}

{$product@value} = {$product}

答案 4 :(得分:0)

你可以这样做:

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