【发布时间】:2017-03-18 23:51:22
【问题描述】:
在laravel docs 中似乎有一个integer 和一个numeric 验证规则。我想知道两者之间的区别是什么?
【问题讨论】:
标签: laravel validation
在laravel docs 中似乎有一个integer 和一个numeric 验证规则。我想知道两者之间的区别是什么?
【问题讨论】:
标签: laravel validation
整数就像一个没有分数的整数:2, 256, 2048。
http://php.net/manual/en/function.is-int.php
数字是任何数字,包括浮点数:2.478, +0123.45e6
【讨论】:
<input type="number"/> 并在 Laravel 上使用 integer 验证它时,我收到了 must be an integer 错误。
integer:即使字符串在被检查的数字之前和之后包含空格,验证也会通过。对于应用程序,它将产生错误“遇到格式不正确的数值”。使用numeric,应用程序将正确处理该错误并要求用户检查他们的输入。
filter_var($value, FILTER_VALIDATE_INT) !== false 将返回 true。所以 (bool)true 和 (int)$x 根据 Laravel 的验证器返回 true。
根据 Laravel 的源代码,这两个验证都有以下逻辑。
// For rule 'integer'
protected function validateInteger($attribute, $value)
{
return filter_var($value, FILTER_VALIDATE_INT) !== false;
}
// For rule 'numeric'
protected function validateNumeric($attribute, $value)
{
return is_numeric($value);
}
更多参考请深入 Laravel 的源代码 - here >>
【讨论】: