2013-08-01 2 views
0

я задаю один массив из PHP в шаблоне Smarty следующим образом:Как проверить наличие элемента элемента в массиве в smarty?

$smarty->assign('data', $contact_list_user_data); 

массива выглядит следующим образом:

Array 
(
    [op] => import 
    [contact_list_id] => 9 
    [form_submitted] => yes 
    [cl_user_type] => Array 
     (
      [0] => upload_from_file 
      [1] => copy_paste_from_excel 
     ) 

    [registered_users_from_date] => 
    [registered_users_to_date] => 
    [logged_in_users_from_date] => 
    [logged_in_users_to_date] => 
    [not_logged_in_users_from_date] => 
    [not_logged_in_users_to_date] => 
    [test_pack_type_id] => 
    [submit_value] => Submit 
) 

Теперь на форме в Smarty шаблон я хочу сделать конкретный флажок если найденное совпадение найдено. Но я не могу правильно разбирать массив. Короче говоря, я хочу, чтобы флажок был выбран, если значения из подмассива cl_user_type сопоставлены со значениями флажков, имеющихся в форме. В приведенном выше случае я хочу, чтобы были выбраны последние два флажка. Как я должен писать, если условие для этого в smarty? Не могли бы вы помочь мне в этом. Я попытался с if в первом условии, но не смог добиться успеха. код из Smarty шаблона выглядит следующим образом:

<tr height="30" id="user_option"> 
        <td width="300"> 
         <input type="checkbox" id="users" name="cl_user_type[]" value="users" {if $data.cl_user_type=='users'}checked="checked"{/if}/>Users 
        </td> 
        <td>&nbsp;<input type="checkbox" id="upload_from_file" name="cl_user_type[]" value="upload_from_file" />Upload From File 
        </td> 
        <td> 
        <input type="checkbox" id="copy_paste_from_excel" name="cl_user_type[]" value="copy_paste_from_excel"/>Copy paste from excel 
        </td> 
        </tr> 

ответ

1

Вы пробовали Smarty {html_checkboxes}? Если по каким-то причинам вы не можете использовать его, есть два решения, будучи лучше один модифицирования массив cl_user_type перед его отправкой в ​​Smarty, как это:

[cl_user_type] => Array 
    (
     [upload_from_file] => true, 
     [copy_paste_from_excel] =>true 
    ) 

, а затем в коде Smarty:

<input type="checkbox" id="upload_from_file" name="cl_user_type[]" value="upload_from_file" {if $data.cl_user_type.upload_from_file}checked="checked"{/if}/> 

другой (хуже) вариант, используя Еогеасп для каждого флажка:

<input type="checkbox" id="upload_from_file" name="cl_user_type[]" value="upload_from_file" 
    {foreach $data.cl_user_type as $type} 
     {if $type=='upload_from_file'}checked="checked"{/if} 
    {/foreach} 
    /> 

как заметка на полях, я бы порекомендовал вам с помощью переменной, так что вы можете легко дублировать флажков для различных U сер типа. Первое решение будет выглядеть так:

{$user_type = 'copy_paste_from_excel'} 
<input type="checkbox" id="{$user_type}" name="cl_user_type[]" value="{$user_type}" {if $data.cl_user_type.$user_type}checked="checked"{/if}/> 
Смежные вопросы