laravel框架的数据验证,如何验证一个字段的值要比另一个字段的值大?

小七哥
  • 197

laravel参数验证,如果提交的参数有两个字段:start_time,end_time,如何验证end_time一定要大于start_time呢?请不要说用after,我试了after判断的最小单位是天,需求是即使仅仅大于一秒也算是通过,小于或等于就不算通过,谢谢。

补充一下:start_time,end_time 这两个字段提交过来本身已经是unix时间戳格式了。

回复
阅读 3.8k
4 个回答

没用过laravel,说一下我的解决思路

  1. 检查start_time,end_time两个参数的时间格式是否合法,使用strtotime后得到的结果是否能精确到秒。
  2. 1没问题的话,参照文档编写自定义验证规则。

gt 同类型进行比较的, 'end_time' => 'required|gt:start_time' , 文档

我就比较厉害了,自己写了一个方法:

protected static function gtThan() {
        Validator::extend('gtThan', function ($attribute, $value, $parameters, $validator) {
            if (!is_numeric($value) || $value < Input::get($parameters[0])) {
                return false;
            }

            return true;
        }, '值错误');
    }

框架用得连原生都不会了?框架里面不代表不能用原生。
另外楼上说的gt验证也是可以的,自己把传进来的时间戳强转成int就行了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏