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

无法修改Bootstrap模板自带日期选择器格式 适配Laravel后端SQL存储

解决方案

一、前端问题修复(解决配置不生效、日期选择器消失问题)

  • 先修正datepicker.js的错误代码:你之前写的moment.format('YYYY-MM-DD')是非法调用,会触发JS异常导致后续脚本中断,这是清缓存后日期选择器不显示的核心原因,改成直接赋值格式字符串即可:
this.locale = {
    format: 'YYYY-MM-DD'
}
  • 你对global.js的两处修改(初始化配置的locale.format、apply.daterangepicker事件里的picker.startDate.format参数)是正确的,额外检查页面是否有内联的.js-datepicker初始化代码,内联代码优先级高于外部JS文件,会覆盖你的配置。
  • 修改完成后同时清理浏览器缓存和Laravel的视图/资源缓存,执行命令:
php artisan view:clear
php artisan cache:clear

避免旧的缓存内容影响配置生效。

二、后端兜底兼容方案(优先保障功能可用)

  • 首先修复修改器不生效的问题:Laravel修改器命名需要和字段名对应,你的字段是date_of_birth,所以修改器名称应为setDateOfBirthAttribute,你之前的命名setBirthDateAttribute不符合规范所以不会触发,修改后同时兼容两种日期格式:
public function setDateOfBirthAttribute($value)
{
    $date = str_contains($value, '/') 
        ? \Carbon\Carbon::createFromFormat('d/m/Y', $value) 
        : \Carbon\Carbon::parse($value);
    $this->attributes['date_of_birth'] = $date->format('Y-m-d');
}
  • 调整控制器的验证规则,将固定格式校验dateformat:d/m/Y改为通用日期校验date,可以自动识别绝大多数合法日期格式:
public function store(){
    $validated = request()->validate([
        'date_of_birth' => ['required', 'date'],
        'gender' => ['required'],
        'email' => ['required', 'email', 'max:255', 'unique:users'],
        'contact_number' => ['required', 'digits:11'],
        'password' => ['string',\Illuminate\Validation\Rules\Password::min(8)],
    ]);

    $attributes = array_merge($validated, [
        'user_type_id' => 3,
    ]);

    $newUser = \App\Models\User::create($attributes);

    return redirect('/');
}

完成上述修改后,即使前端暂时没有完全调整到位,后端也可以正常处理两种格式的日期,不会触发数据库报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:54:03