You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP+Smarty网站提交后保留日历输入框选中日期的实现方法

在Smarty中保留用户选择的日期输入值

嘿,我来帮你搞定这个问题——要让PHP+Smarty网站的日期输入框在提交刷新后保留用户上次选择的内容,其实分三步就能实现,咱们一步步来:

1. PHP后端接收并传递日期参数

首先,你需要在处理表单提交的PHP文件里,安全获取用户提交的日期值,然后把这些值传给Smarty模板,这样模板才能拿到数据并渲染到输入框里。

// 安全获取提交的日期参数,避免未定义变量报错
$dateFrom = isset($_POST['DateFrom']) ? trim($_POST['DateFrom']) : '';
$dateTo = isset($_POST['DateTo']) ? trim($_POST['DateTo']) : '';

// 如果你的表单用的是GET方法,就把$_POST换成$_GET就行

// 把日期变量传给Smarty模板
$smarty->assign('savedDateFrom', $dateFrom);
$smarty->assign('savedDateTo', $dateTo);

2. Smarty模板中填充输入框的value属性

接下来修改你的模板代码,给日期输入框加上value属性,用Smarty变量填充它。这样页面加载时,就会自动显示上次提交的日期。

<!-- 第一个日期输入框 -->
<div class="col-sm-4 form-group">
    <label for="DateFrom">Date from</label>
    <div class="input-group date" id="datetimepicker1">
        <input class="text-box single-line form-control date" 
               id="DateFrom" 
               name="DateFrom" 
               value="{$savedDateFrom}" />
        <!-- 保留你原来的日历触发元素,比如: -->
        <span class="input-group-addon">
            <span class="glyphicon glyphicon-calendar"></span>
        </span>
    </div>
</div>

<!-- 第二个日期输入框 -->
<div class="col-sm-4 form-group">
    <label for="DateTo">Date to</label>
    <div class="input-group date" id="datetimepicker2">
        <input class="text-box single-line form-control date" 
               id="DateTo" 
               name="DateTo" 
               value="{$savedDateTo}" />
        <span class="input-group-addon">
            <span class="glyphicon glyphicon-calendar"></span>
        </span>
    </div>
</div>

3. 调整前端日历插件的初始化

如果你的日期选择用的是第三方插件(比如bootstrap-datetimepicker),还要确保插件初始化时能识别输入框里的已有值。以bootstrap-datetimepicker为例,你可以在初始化时设置defaultDate参数:

$(document).ready(function() {
    // 初始化第一个日历选择器
    $('#datetimepicker1').datetimepicker({
        format: 'YYYY-MM-DD', // 这里要和你输入框的日期格式完全一致
        defaultDate: '{$savedDateFrom}' // 有值的话自动加载这个日期
    });

    // 初始化第二个日历选择器
    $('#datetimepicker2').datetimepicker({
        format: 'YYYY-MM-DD',
        defaultDate: '{$savedDateTo}'
    });
});

额外注意事项

  • 日期格式统一:确保PHP端接收的日期格式、Smarty渲染的格式、前端插件的格式完全一致,否则插件可能无法识别日期。
  • 安全性:如果需要对日期做进一步处理(比如存入数据库),记得用DateTime类验证日期的合法性,避免恶意输入。
  • GET/POST区分:如果你的表单用的是method="get",就把PHP里的$_POST换成$_GET。

内容的提问来源于stack exchange,提问作者Grimmjow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:35:59