Laravel 验证:数字和整数之间的区别?
Posted
技术标签:
【中文标题】Laravel 验证:数字和整数之间的区别?【英文标题】:Laravel validation : difference between numeric and integer? 【发布时间】:2017-03-18 23:51:22 【问题描述】:在laravel docs 中似乎有一个integer 和一个numeric 验证规则。我想知道两者之间的区别是什么?
【问题讨论】:
【参考方案1】:整数就像一个没有分数的整数:2, 256, 2048
。
http://php.net/manual/en/function.is-int.php
数字是任何数字,包括浮点数:2.478, +0123.45e6
http://php.net/manual/en/function.is-numeric.php
【讨论】:
在 html 中,当使用<input type="number"/>
并在 Laravel 上使用 integer
验证它时,我收到了 must be an integer
错误。
请注意integer
:即使字符串在被检查的数字之前和之后包含空格,验证也会通过。对于应用程序,它将产生错误“遇到格式不正确的数值”。使用numeric
,应用程序将正确处理该错误并要求用户检查他们的输入。
这是误导。 Laravel 不擅长严格输入。如果 $value 设置为 (bool)true,那么 is_int 返回 false,但是 Laravel 用于整数验证的 filter_var($value, FILTER_VALIDATE_INT) !== false
将返回 true。所以 (bool)true 和 (int)$x 根据 Laravel 的验证器返回 true。【参考方案2】:
根据 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 >>
【讨论】:
以上是关于Laravel 验证:数字和整数之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章