將 PHP 陣列資料直接對應到 HTML 表單元件,分離資料與呈現,支援預設選中值、標籤輸出自動跳脫。
// PHP
$smarty->assign('cust_ids', [1000, 1001, 1002, 1003]);
$smarty->assign('cust_names', ['Alice', 'Bob', 'Cindy', 'David']);
$smarty->assign('customer_id', 1002); // 預設選中
// 模板
<select name="customer_id">
{html_options values=$cust_ids output=$cust_names selected=$customer_id}
</select>
/*
輸出:
*/
{html_radios name="gender" values=['M','F'] output=['男','女'] selected=$user.gender separator=" "}
$smarty->assign('roles', ['admin','editor','viewer']);
$smarty->assign('user_roles', ['editor']); // 陣列值
{html_checkboxes name="roles[]" values=$roles output=$roles selected=$user_roles separator="
"}
/*
輸出:
admin
editor
viewer
*/
{* 日期:年月日三個 select *}
{html_select_date prefix="dob_" start_year=1950 end_year=2010 display_days=true month_format="%m" selected=$user.dob}
{* 時間:時分秒 *}
{html_select_time prefix="meeting_" display_seconds=false minute_interval=15 selected=$meeting.time}
| 函式 | 必要參數 | 常用選用參數 |
|---|---|---|
| html_options | values, output | selected, print_result |
| html_radios | name, values | output, selected, separator, labels, checked, print_result |
| html_checkboxes | name, values | output, selected, separator, labels, print_result |
| html_select_date | — | prefix, start_year, end_year, display_days, month_format, selected, print_result |
| html_select_time | — | prefix, display_seconds, minute_interval, selected, print_result |
// PHP
$stmt = $pdo->query('SELECT id, name FROM categories ORDER BY sort');
$cats = $stmt->fetchAll(PDO::FETCH_KEY_PAIR); // [id => name]
$smarty->assign('categories', $cats);
$smarty->assign('selected_cat', $product->category_id);
// 模板
{html_options values=$categories output=$categories selected=$selected_cat}