Правило decimal
Правило decimal применяется к полям формы для валидации десятичных чисел.
Оно проверяет, что значение является числом с плавающей точкой и имеет указанное
количество знаков после запятой. Первым параметром передаётся количество
десятичных знаков. Можно передать несколько параметров для указания допустимого
диапазона знаков.
Синтаксис
<?php
'field' => 'decimal:digits'
'field' => 'decimal:min_digits,max_digits'
?>
Пример
Проверим поле 'price', которое должно содержать десятичное число
с двумя знаками после запятой:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class ProductController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'price' => 'decimal:2',
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
return response()->json(['message' => 'Product created successfully']);
}
}
?>
Результат выполнения кода при отправке формы:
"Product created successfully"
Если отправить данные со значением 'price' равным 10.5:
["The price field must have 2 decimal places."]
Пример
Проверим поле 'amount', которое должно содержать десятичное число
с количеством знаков от одного до трёх после запятой:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class OrderController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'amount' => 'decimal:1,3',
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
return response()->json(['message' => 'Order processed successfully']);
}
}
?>
Результат выполнения кода при отправке формы с полем 'amount'
равным 99.9:
"Order processed successfully"
Если отправить данные со значением 'amount' равным 50.1234:
["The amount field must have between 1 and 3 decimal places."]
Пример
Используем правило decimal в классе FormRequest для валидации
десятичного поля 'weight':
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ProductRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'weight' => 'required|decimal:2',
'name' => 'required|string|max:255',
'price' => 'required|numeric',
];
}
}
?>
Результат выполнения кода при успешной валидации:
"Product validated successfully"