Smarty проверяет выбранные флажки, используя array_search - PullRequest
1 голос
/ 23 ноября 2010

Я пытаюсь установить флажки на основе значений в массиве smarty.

В моем php

$smarty->assign('locations_array',array(4,6,9,7));

Я хочу выполнить поиск в массиве и, если есть совпадение, отметьте флажок.Вот то, что я попробовал в моем шаблоне, но я не могу заставить его работать. Я не уверен, как я могу передать array_search требуемую иглу и стог сена?

{foreach $locations as $x}
   {if $x.id == $x.id|@array_search:$locations_array}
   <label><input checked type="checkbox" name="locations[]" value="{$x.id}"/>{$x.title}</label>
   {else}
     <label><input type="checkbox" name="locations[]" value="{$x.id}" />{$x.title</label>
   {/if}
{/foreach}

Возможно ли это безсоздание пользовательской функции?

Ответы [ 3 ]

1 голос
/ 23 ноября 2010

Для справки, я думаю, что это правильный синтаксис при использовании array_search.

 {if $x.id|array_search:$locations_array}

где $ x.id - игла, а $ location_array - стог сена массиваЯ решил пойти на другой подход, основанный на обратной связи Eknals

1 голос
/ 23 ноября 2010

На самом деле, не отвечая на ваш главный вопрос (я не знаю, можете ли вы передать в функцию две переменные из шаблона), этого можно избежать, создав новый массив вместо $locations в файле php. Просто глядя на ваш опубликованный код, вы бы хотели, чтобы каждый элемент имел три подэлемента: title, id и checked. Таким образом, вы можете избежать необходимости сравнивать массивы на стороне шаблона, а также избежать написания пользовательской функции.

0 голосов
/ 29 ноября 2010

Я не работал с array_search, но у меня есть простое решение для вашей проблемы. вы можете проверить значение вашего флажка с помощью location_array в цикле foreach.

 **$i = 0;**
        {foreach $locations as $x}
           **{if $x.id == $locations_array[$i]}**
           <label><input checked type="checkbox" name="locations[]" value="{$x.id}"/>{$x.title}</label>
           {else}
             <label><input type="checkbox" name="locations[]" value="{$x.id}" />{$x.title</label>
           {/if}
**$i++;**
        {/foreach}
...