I have a several fields like for person’s profile and for each field there are several options.
For e.g.
Age (10-15, 15-20, 20-25)
Category (X, Y, Z)
and several other fields.
I have search page with all these fields along with their option values as check-boxes.
So I am currently printing these values using below for-each loop
{foreach from=$field.options item=options}
<input name="{$field.field_search_name}[]" type="checkbox" value="{$options.url}" />
{$options.caption}
{/foreach}
Now issue is in making all the fields which are selected before submit, I need to show as
selected from POST array.
I know that if we had static check-box name like “category[]” I could have done like below
{if in_array($options.url, $smarty.post.category)} checked {/if}
but in my case the check-box name is also dynamic and it is defined in smarty template only so I am not sure how to get work around for this.
Something like below has to be worked on , please let me know if it is possible to do this in smarty.
{if in_array($options.url, $smarty.post.$field.field_search_name)} checked {/if}
If you want to have the check-boxes checked as per the POST fields set in the request you can access them through:
However that would depend on the input names being unique. If you’re using field names with
[]to make them be an array when the form is submitted, you should check on whether the value is in the array.This requires a little hack to access the array:
To be honest though, I’d recommend generating a unique name for each input rather than putting several in the same name, and separating them using
fieldName[]to push the values into the array anonymously. Doing that would reduce the issues you’re seeing with not being able to access the POSTed variable directly.