У Laravel представлено більш виразний підхід до числової валідації за допомогою інтерфейсу Rule::numeric()
. Цей синтаксис перетворює традиційні правила на основі рядків у методи, які можна з'єднувати, що покращує читабельність.
Завдяки нововведенню синтаксис став зрозумілішим для розробників:
// Раніше
$rules = [
'price' => 'numeric|min:5|max:1000|decimal:2',
];
// Тепер
$rules = [
'price' => Rule::numeric()
->min(5)
->max(1000)
->decimal(2),
];
Цей підхід особливо ефективний при реалізації всебічної валідації фінансових чи вимірювальних даних:
class ProductController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'price' => Rule::numeric()
->min(0.01)
->max(9999.99)
->decimal(2),
'weight' => Rule::numeric()
->min(0)
->decimal(3)
->nullable(),
'stock' => Rule::numeric()
->integer()
->min(0)
->nullable(),
'discount_percent' => Rule::numeric()
->between(0, 100)
->decimal(1)
]);
Product::create($validated);
return redirect()->route('products.index')
->with('success', 'Товар успішно створено');
}
}
Флюїдна валідація чисел створює більш зручні для підтримки визначення правил, при цьому забезпечуючи кращу підтримку IDE завдяки з'єднанню методів замість парсингу рядків