在最近的一个项目中,我发现他们使用的是聪明的,客户需要一个3级的选项组。我从来没有使用过smarty,我发现这个特殊情况有点难以从头开始。
我需要做下一个但是聪明的事情:
<select>
<optgroup label="Level One"></optgroup>
<optgroup label="Level Two" style="padding-left:15px"></optgroup>
<option style="padding-left:30px"> A.B.1 </option>
<optgroup label="Level Two" style="padding-left:15px"></optgroup>
<option style="padding-left:30px"> A.B.2 </option>
<optgroup label="Level One"></optgroup>
<optgroup label="Level Two" style="padding-left:15px"></optgroup>
<option style="padding-left:30px"> A.B.1 </option>
<optgroup label="Level Two" style="padding-left:15px"></optgroup>
<option style="padding-left:30px"> A.B.2 </option>
</select>
我还想知道告诉这个聪明人的最佳方法是什么;使用3个级别的数组或如何(我正在使用PHP),如果我有一个默认选项,我将如何表示它。
提前谢谢!
实际使用更新代码
$arr['Sport'] = array(6 => 'Golf', 9 => 'Cricket',7 => 'Swim');
$arr['Rest'] = array(3 => 'Sauna',1 => 'Massage', "Test" => array(10 => 'Other', 11 => 'Option'));
$smarty->assign('lookups', $arr);
$smarty->assign('fav', 7);
这实际上只给我2个等级。
更新2
答案 0 :(得分:1)
Smarty3模板
{$options = [
"Level1 - 1st" => [
"Level2 - 1st" => "Level2 - 1st",
"Level2 - 2nd" => ["Hello", "World"]
],
"Level1 - 2nd" => [
"Level2 - 3rd" => "Level2 - 3rd",
"Level2 - 4th" => ["Hello" => "Hello", "other", "World"]
]
]}
<select>{html_options options=$options}</select>
生成以下HTML(手动缩进)
<select>
<optgroup label="Level1 - 1st">
<option value="Level2 - 1st">Level2 - 1st</option>
<optgroup label="Level2 - 2nd">
<option value="0">Hello</option>
<option value="1">World</option>
</optgroup>
</optgroup>
<optgroup label="Level1 - 2nd">
<option value="Level2 - 3rd">Level2 - 3rd</option>
<optgroup label="Level2 - 4th">
<option value="Hello">Hello</option>
<option value="0">other</option>
<option value="1">World</option>
</optgroup>
</optgroup>
</select>
这与人们的期望非常相似。但是在Firefox 7中查看,我看到正确嵌套的组显示在同一级别上: