2013-09-30 1 views
1

PHP ЧастьКак добавить больше атрибутов при использовании html_options в Smarty

$ids = array(1, 2, 3); 
$texts = array('a', 'b', 'c'); 
$attributes = array('a1', 'b1', 'c1'); 
$smarty->assign('ids', $ids); 
$smarty->assign('texts', $texts); 
$smarty->assign('attributes', $attributes); 

Tpl Часть

<select name="test"> 
{html_options values=$ids output=$texts attribute=$attributes} 
</select> 

Результат

<select name="test"> 
<option value="1">a</option> 
<option value="2">b</option> 
<option value="3">c</option> 
</select> 

Могу ли я добавить более определенные атрибуты?

ответ

2

К сожалению, таких функций нет. Вы можете создавать параметры непосредственно с кодом, как это:

<select name="test"> 
    {foreach $ids as $id} 
    <option value="{$id}" attribute="{$attributes[[email protected]]}">{$texts[[email protected]]}</option> 
    {/foreach} 
</select> 

Или, я хотел бы предложить, чтобы сделать некоторые более гибкую структуру данных, как:

$data = array(1 => array('attr' => 'a1', 'text' => 'a'), 
       2 => array('attr' => 'a2', 'text' => 'b'), 
       3 => array('attr' => 'a3', 'text' => 'c')); 

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

И затем, используя код, как этот

<select name="test"> 
    {foreach $data as $item} 
    <option value="{[email protected]}" attribute="{$item.attr}">{$item.text}</option> 
    {/foreach} 
</select> 

Вы должны добавить некоторые значения экранов к значениям или использовать auto_escape для значений, это всего лишь базовая идея.

Смежные вопросы