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

Laravel 8表单请求验证如何配置出生日期满18年的校验规则

Laravel 8 出生日期满18周岁验证规则调整方案

原验证代码:

public function rules()
{
    return [
        'birth_date' => [
            'required',
            'before: date("Y-m-d")'
        ],
    ];
}

你只需要把before规则替换为before_or_equal,参数传入距今18年前的日期即可,调整后的代码如下:

public function rules()
{
    return [
        'birth_date' => [
            'required',
            'date', // 新增日期格式校验,避免非法格式导致校验异常
            'before_or_equal:' . now()->subYears(18)->toDateString()
        ],
    ];
}

规则说明

  • 用now()助手函数生成当前时间实例,调用subYears(18)减去18年,再转为Y-m-d格式的日期字符串作为校验阈值
  • 用before_or_equal替代before,可以覆盖当天刚好满18周岁的场景,避免合法日期被误拦截
  • 如果你不想用Carbon类,也可以用原生PHP方法生成阈值日期,写法为:
    'before_or_equal:' . date('Y-m-d', strtotime('-18 years'))
    

注意事项

  • 要保证前端传入的birth_date格式为Y-m-d,和校验阈值的格式保持一致,避免格式不匹配导致校验失效
  • 若需要支持其他日期格式,可以搭配date_format:你的格式规则一起使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:24:04