【问题标题】:How can I make multiples of thousands validation on laravel?如何在 laravel 上进行数千次验证?
【发布时间】:2018-02-09 03:37:40
【问题描述】:

我在 laravel 上的验证是这样的:

return Validator::make($data, [
    ...
    'amount' => 'required|integer|min:20000',
]);

我希望金额的值是数千的倍数

所以只能输入千倍的数值

例如:25000、50000、151000、200000 等

输入不是千倍数的示例:25500、50500、151500、200500 等

我该怎么做?

【问题讨论】:

    标签: laravel validation laravel-5.4 required


    【解决方案1】:

    您可以取该数字的模,使用自定义验证规则实现此逻辑: https://laravel.com/docs/5.4/validation#custom-validation-rules

    应该这样做:

      Validator::extend('mod1000', function ($attribute, $value, $parameters, $validator) {
                return $value % 1000 == 0;
      });
    

    【讨论】:

    • 是的,我知道。但是我如何在 laravel 验证中做到这一点。如果是 laravel 验证,需要在此处添加:'amount' => 'required|integer|min:20000',。但是我仍然很困惑如何添加它
    • @SuccessMan 看到这个问题stackoverflow.com/questions/32036882/… 可能对你有帮助
    • @SuccessMan 像这样'amount' => 'required|integer|min:20000|mod1000' 更改您的验证。
    • @shyammakwana.me,存在错误:Method [validateMod1000] does not exist.
    • @SuccessMan 你必须首先像我展示的那样使用 extend 方法定义它
    【解决方案2】:

    您可以像这样使用正则表达式进行此类验证:

    return Validator::make($data, [
        ...
        'amount' => 'required|integer|regex:/^[1-9]+[0-9]*000$/',
    ]);
    

    表达式中的最后三个零代表千位。第一个数字不应为零,它们之间的任何数字都可以完美验证您的情况。

    希望你能理解。

    【讨论】:

    • 存在错误:preg_match(): No ending delimiter '^' found
    • @SuccessMan 您可能需要使用 \ 对其进行转义
    • @SuccessMan 我忘了在那边添加/。我已经更新了。
    • @SagarGautam 不应该是 `\` 吗?
    • @Wreigh 我刚刚忘记了正则表达式的语法
    猜你喜欢
    • 2020-04-02
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 2017-03-18
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多