Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access key and value of an array in smarty template?

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.

like image 720
PHPLover Avatar asked Jan 07 '14 07:01

PHPLover


2 Answers

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.

like image 73
Bart Friederichs Avatar answered Oct 03 '22 21:10

Bart Friederichs


Smarty 3 foreach construction is like this

{foreach $products as $p}
    {$p@key}: {$p}
{/foreach}
like image 25
SerzN1 Avatar answered Oct 03 '22 19:10

SerzN1