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

如何在Laravel中通过daterangepicker获取daterangepicker_start/end参数

解决方案:直接传递daterangepicker的起始/结束日期参数

没问题,我来帮你搞定这个需求!要让表单直接传递daterangepicker_start和daterangepicker_end这两个独立参数,只需要做三个小改动,一步步来:

1. 在表单中添加隐藏输入框

首先,你需要在现有的表单里新增两个隐藏输入字段,用来分别存储起始日期和结束日期的值。修改你的Blade模板代码:

{!! Form::open(['method' => 'GET', 'route' => ['user-mangement.index'],'class' => 'form-material text-right col-6 p-r-20']) !!}
{{ Form::text('daterange',null,['placeholder' => '选择日期范围' ,'class' => 'form-control input-daterange-datepicker col-6' ]) }}
<!-- 新增两个隐藏输入框,用于存储单独的日期参数 -->
{{ Form::hidden('daterangepicker_start', null, ['id' => 'daterangepicker_start']) }}
{{ Form::hidden('daterangepicker_end', null, ['id' => 'daterangepicker_end']) }}
{{ Form::button('<i class="fa fa-search"></i>', ['type' => 'submit', 'class' => 'btn btn-sm btn-inverse waves-effect waves-light m-r-15'] ) }}
{!! Form::close() !!}

2. 修改JS代码,添加日期选择回调

接下来,给daterangepicker添加apply.daterangepicker事件监听,当用户确认选择日期范围后,把选中的起始和结束日期赋值给刚才的隐藏输入框:

<script>
$(function() {
    $(".input-daterange-datepicker").daterangepicker({
        locale: { format: 'YYYY/DD/MM' },
    }).on('apply.daterangepicker', function(ev, picker) {
        // 将选中的日期按指定格式赋值给隐藏输入框
        $('#daterangepicker_start').val(picker.startDate.format('YYYY/DD/MM'));
        $('#daterangepicker_end').val(picker.endDate.format('YYYY/DD/MM'));
    });
});
</script>

这里的核心是利用daterangepicker的apply事件,在用户确认日期选择后,通过picker.startDate和picker.endDate获取日期对象,再转成和你配置一致的格式,同步到隐藏域中。

3. 在控制器中直接获取参数

现在表单提交后,你就可以在控制器里直接拿到这两个独立的日期参数了:

public function index(Request $request)
{
    $s = $request->input('s');
    // 直接获取起始和结束日期参数
    $startDate = $request->input('daterangepicker_start');
    $endDate = $request->input('daterangepicker_end');
    // 原有的daterange参数依然可以获取,按需保留即可
    $daterange = $request->input('daterange');

    // 示例:添加日期范围筛选逻辑(根据你的实际业务调整)
    $users = User::sortable(['created_at' => 'desc'])
        ->search($s)
        ->when($startDate && $endDate, function($query) use ($startDate, $endDate) {
            return $query->whereBetween('created_at', [$startDate, $endDate]);
        })
        ->paginate(10);

    return view('backend/user/index',compact('users', 'startDate', 'endDate'));
}

这样就不用再手动拆分daterange字符串了,直接拿到两个独立的日期参数,用起来更灵活!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:03:45