什么是 Smarty?
为什么使用它?
用例和工作流程
语法比较
模板继承
最佳实践
速成课程
{html_select_date}
是创建日期下拉列表的自定义函数。它可以显示年、月和日的任何部分或全部。未列在以下列表中的所有参数都将作为<select>
标签中日期、月份和年份的名称/值对进行打印。
属性名称 | 类型 | 必需 | 默认 | 说明 |
---|---|---|---|---|
prefix | 字符串 | 否 | Date_ | 用它给变量名称添加前缀 |
time |
时间戳、DateTime、MySQL 时间戳或可由strtotime() 解析的任何字符串,数组(如果设置了 field_array,则为由此函数产生的数组)。 |
否 | 当前时间戳 | 要预先选择哪个日期/时间。如果给定了一个数组,则使用属性 field_array 和 prefix 来标识要从中提取年份、月份和日期的数组元素。省略此参数或提供一个错误值将选择当前日期。若要防止日期选择,请传入NULL |
start_year | 字符串 | 否 | 当前年份 | 下拉列表中的第一个年份,可能是年份数字,也可能是相对于当前年份(+/- N) |
end_year | 字符串 | 否 | 与 start_year 相同 | 下拉列表中的最后一个年份,可能是年份数字,也可能是相对于当前年份(+/- N) |
display_days | 布尔值 | 否 | TRUE |
是否显示日期 |
display_months | 布尔值 | 否 | TRUE |
是否显示月份 |
display_years | 布尔值 | 否 | TRUE |
是否显示年份 |
month_names | 数组 | 否 | null | 用于显示月份的字符串列表。数组(1 => '1 月',…,12 => '12 月') |
month_format | 字符串 | 否 | %B | 月份应采用哪种格式(strftime) |
day_format | 字符串 | 否 | %02d | 天输出应采用哪种格式(sprintf) |
day_value_format | 字符串 | 否 | %d | 天值应用哪种格式(sprintf) |
year_as_text | 布尔值 | 否 | FALSE |
是否以文本形式显示年份 |
reverse_years | 布尔值 | 否 | FALSE |
按相反顺序显示年份 |
field_array | 字符串 | 否 | null | 如果给出了名称,则下拉框将以这样的方式绘制,即结果将以 name[Day]、name[Year]、name[Month] 的形式返回到 PHP。 |
day_size | 字符串 | 否 | null | 如果给出了大小属性,则添加给 select 标记 |
month_size | 字符串 | 否 | null | 如果给出了大小属性,则添加给 select 标记 |
year_size | 字符串 | 否 | null | 如果给出了大小属性,则添加给 select 标记 |
all_extra | 字符串 | 否 | null | 如果给出了其他属性,则将其他属性添加到所有 select/input 标记(如果给出了其他属性) |
day_extra | 字符串 | 否 | null | 如果给出了其他属性,则将其他属性添加到 select/input 标记(如果给出了其他属性) |
month_extra | 字符串 | 否 | null | 如果给出了其他属性,则将其他属性添加到 select/input 标记(如果给出了其他属性) |
year_extra | 字符串 | 否 | null | 如果给出了其他属性,则将其他属性添加到 select/input 标记(如果给出了其他属性) |
all_id | 字符串 | 否 | null | 如果给出了 ID 属性,则将 ID 属性添加到所有 select/input 标记(如果给出了 ID 属性) |
day_id | 字符串 | 否 | null | 如果给出了 ID 属性,则将 ID 属性添加到 select/input 标记(如果给出了 ID 属性) |
month_id | 字符串 | 否 | null | 如果给出了 ID 属性,则将 ID 属性添加到 select/input 标记(如果给出了 ID 属性) |
year_id | 字符串 | 否 | null | 如果给出了 ID 属性,则将 ID 属性添加到 select/input 标记(如果给出了 ID 属性) |
field_order | 字符串 | 否 | MDY | 显示字段的顺序 |
field_separator | 字符串 | 否 | \n | 不同字段之间打印的字符串 |
month_value_format | 字符串 | 否 | %m | 月份值的 strftime() 格式,默认情况下为月份数的 %m。 |
all_empty | 字符串 | 否 | null | 如果提供了该参数,则任何选择框的第一个元素具有该值作为其标签,并具有 “” 作为其值。例如,此参数对于使选择框显示 “请选择” 非常有用。 |
year_empty | 字符串 | 否 | null | 如果提供了该参数,则年份选择框的第一个元素具有该值作为其标签,并具有 “” 作为其值。例如,此参数对于使选择框显示 “请选择年份” 非常有用。请注意,你可以使用 “-MM-DD” 等值作为 time-attribute 来表示未选中的年份。 |
month_empty | 字符串 | 否 | null | 如果提供了该参数,则月份选择框的第一个元素具有该值作为其标签,并具有 “” 作为其值。请注意,你可以使用 “YYYY--DD” 等值作为 time-attribute 来表示未选中的月份。 |
day_empty | 字符串 | 否 | null | 如果提供了该参数,则天选择框的第一个元素具有该值作为其标签,并具有 “” 作为其值。请注意,你可以使用 “YYYY-MM-” 等值作为 time-attribute 来表示未选中的天。 |
在 日期提示页面 上有一个有用的 php 函数,用于将 {html_select_date}
表单值转换为时间戳。
示例 8.16。{html_select_date}
模板代码
{html_select_date}
这将输出
<select name="Date_Month"> <option value="1">January</option> <option value="2">February</option> <option value="3">March</option> ..... snipped ..... <option value="10">October</option> <option value="11">November</option> <option value="12" selected="selected">December</option> </select> <select name="Date_Day"> <option value="1">01</option> <option value="2">02</option> <option value="3">03</option> ..... snipped ..... <option value="11">11</option> <option value="12">12</option> <option value="13" selected="selected">13</option> <option value="14">14</option> <option value="15">15</option> ..... snipped ..... <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> <select name="Date_Year"> <option value="2006" selected="selected">2006</option> </select>
示例 8.17。{html_select_date} 第二个示例
{* start and end year can be relative to current year *} {html_select_date prefix='StartDate' time=$time start_year='-5' end_year='+1' display_days=false}
如果当前年份为 2000,则输出
<select name="StartDateMonth"> <option value="1">January</option> <option value="2">February</option> .... snipped .... <option value="11">November</option> <option value="12" selected="selected">December</option> </select> <select name="StartDateYear"> <option value="1995">1995</option> .... snipped .... <option value="1999">1999</option> <option value="2000" selected="selected">2000</option> <option value="2001">2001</option> </select>