【问题标题】:Allow only numeric and float values with validation in Laravel在 Laravel 中仅允许带有验证的数字和浮点值
【发布时间】:2021-08-31 07:42:18
【问题描述】:

我的模型中有一个字段days,现在我只想在此列中保存integerfloat 值。

值可以是:

  • 1
  • 2
  • 0.5
  • 2.5

我尝试使用numeric,但它不允许我输入float 值:

$this->validate($request, [
    'days' => 'required|numeric|min:1|max:50',
]);

非常感谢任何帮助。

谢谢

【问题讨论】:

  • @Pradeep :我尝试了您的解决方案,但不允许我输入如下值:0.5
  • 只需删除min:1
  • @Pradeep:我应该只使用required|digits,因为目前我正在使用required|digits_between:0,100
  • 试试这个'required|numeric|min:0|max:50'
  • @Pradeep 我试过了,但它不起作用

标签: php laravel laravel-5


【解决方案1】:

您可以为您的案例尝试自定义验证规则。 示例:

'days' => 'required|regex:/^\d*(\.\d{2})?$/'

【讨论】:

  • 我不建议将regex 用于这么简单的事情,与我的回答相比,对于完全不知道正则表达式的人来说,这太过分了。此外,它的性能较低(尽管这是一个简单的检查数字)。
【解决方案2】:

如果没有 validation rule 帮助你,你可以使用闭包。

所以,先试试这个:

'days' => 'required|numeric|min:0|max:50',

如果不起作用,我们可以使用closures

'days' => [
    'required',
    'numeric',
    function ($attribute, $value, $fail) {
        if ($value <= 0) {
            $fail($attribute.' must be greater than 0.');
        }
    },
    'max:50',
],

请记住,numeric 验证使用了 is_numeric 内置 PHP 函数。

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多