Laravel Tutorials

Enhancing Numeric Validation with Laravel's Fluent Rule Interface

Published
Enhancing Numeric Validation with Laravel's Fluent Rule Interface image

Laravel introduces a more expressive approach to numeric validation through the fluent Rule::numeric() interface. This syntax transforms traditional string-based rules into chainable methods for improved readability.

The implementation provides a more developer-friendly syntax:

// Before
$rules = [
'price' => 'numeric|min:5|max:1000|decimal:2',
];
 
// After
$rules = [
'price' => Rule::numeric()
->min(5)
->max(1000)
->decimal(2),
];

This approach particularly shines when implementing comprehensive validation for financial or measurement data:

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', 'Product created successfully');
}
}

The fluent numeric validation interface creates more maintainable rule definitions while providing better IDE support through method chaining rather than string parsing.

Harris Raftopoulos photo

Senior Software Engineer • Staff & Educator @ Laravel News • Co-organizer @ Laravel Greece Meetup

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
Securing Filament plugins with Plumb image

Securing Filament plugins with Plumb

Read article
LayaPHP: Self-Hosted Text Classification for PHP and Laravel image

LayaPHP: Self-Hosted Text Classification for PHP and Laravel

Read article
WhenMounted and BigInt Props in Inertia.js v3.8 image

WhenMounted and BigInt Props in Inertia.js v3.8

Read article
Postcodes for Laravel: GB Postcode Lookup and Geography Data image

Postcodes for Laravel: GB Postcode Lookup and Geography Data

Read article
Laravel 14 Adds a defaults() Method to Eloquent Models image

Laravel 14 Adds a defaults() Method to Eloquent Models

Read article
Laravel AI SDK and Laravel MCP Security Fixes: Update Now image

Laravel AI SDK and Laravel MCP Security Fixes: Update Now

Read article