Правило numeric
Правило numeric используется для валидации полей формы,
которые должны содержать числовое значение. Оно проверяет,
что переданное значение является числом или строкой,
представляющей число. Правило пропускает целые числа,
числа с плавающей точкой и числа в экспоненциальной записи,
но не пропускает строки с буквами или специальными символами.
Синтаксис
<?php
'field' => 'numeric'
?>
Пример
Давайте проверим, что поле 'age' содержит число:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class UserController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'age' => 'numeric'
]);
if ($validator->fails()) {
$res = $validator->errors()->all();
} else {
$res = "Validation passed";
}
echo json_encode($res);
}
}
?>
Результат выполнения кода при передаче значения 25:
"Validation passed"
Пример
Проверим, что поле 'price' содержит дробное число:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class ProductController extends Controller
{
public function update(Request $request)
{
$validator = Validator::make($request->all(), [
'price' => 'numeric'
]);
if ($validator->fails()) {
$res = $validator->errors()->first('price');
} else {
$res = "Validation passed";
}
echo json_encode($res);
}
}
?>
Результат выполнения кода при передаче значения 99.99:
"Validation passed"
Пример
Проверим, что поле 'score' содержит число в экспоненциальной записи:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class ScoreController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'score' => 'numeric'
]);
if ($validator->passes()) {
$res = "Validation passed";
} else {
$res = $validator->errors()->first('score');
}
echo json_encode($res);
}
}
?>
Результат выполнения кода при передаче значения 1.5e3:
"Validation passed"
Пример
Рассмотрим случай, когда валидация не проходит из-за нечислового значения:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class UserController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'age' => 'numeric'
]);
if ($validator->fails()) {
$res = $validator->errors()->first('age');
} else {
$res = "Validation passed";
}
echo json_encode($res);
}
}
?>
Результат выполнения кода при передаче значения '25 years':
"The age must be a number"
Пример
Давайте скомбинируем правило numeric с другими правилами для более точной валидации:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class OrderController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'amount' => 'required|numeric|min:1|max:9999.99',
'quantity' => 'required|numeric|integer'
]);
if ($validator->fails()) {
$res = $validator->errors()->all();
} else {
$res = "Validation passed";
}
echo json_encode($res);
}
}
?>
Результат выполнения кода при передаче корректных значений:
"Validation passed"