News

Laravel 10.33 Released

Published Updated

This week, the Laravel team released v10.33, with new number helper methods, test assertions about batches that exist in a job chain, a hex color validation rule, and more. Here is a bit more info about the new features introduced this week:

Number utility class

Caen De Silva contributed the Laravel Number Utility Class, which simplifies most number formatting needs. The number helper lives in the Illuminate\Support package, giving you several new helpers. Here are a few examples:

Number::format(25) // 25
Number::format(100000) // 100,000
Number::format(123456789) // 123,456,789
 
Number::format(123456789, locale: 'en') // 123,456,789
Number::format(123456789, locale: 'de') // 123.456.789
Number::format(123456789, locale: 'sv') // 123 456 789
 
Number::percentage(25) // 25%
Number::percentage((1/3) * 100, precision: 2) // 33.33%

See our post on the Laravel Number Utility Class to learn about the newest Laravel helper.

Make assertions about batches that exist in job chains

Taylor Otwell contributed improvements to the testability of batches that exist in a chain via a new Bus::chainedBatch testing helper. Here's an example of how this works taken from Pull Request #49003:

// Route
Route::get('/batch', function () {
Bus::chain([
new TestJob,
Bus::batch([
new TestJob,
]),
new TestJob,
])->dispatch();
});
 
// Test
Bus::fake();
 
$response = $this->get('/batch');
$response->assertSuccessful();
 
Bus::assertChained([
new TestJob,
Bus::chainedBatch(function ($batch) {
return $batch->jobs->count() === 1;
}),
new TestJob,
]);

See the new Testing Job Chains documentation for more details.

Pass the $validator as a parameter to closure-based rules

@shinsente contributed by adding the validator instance to as an argument in closure-based validation rules:

use Closure;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\LazyCollection;
use Illuminate\Validation\Validator as ValidationValidator;
 
$rules = [
'price' => [
function (string $attribute, mixed $value, Closure $fail, ValidationValidator $validator) {
if (!price_logic($value, $validator->attributes()['payment_country'] ?? null)) {
$fail("The {$attribute} is invalid.");
}
},
],
];

Add color_hex validation rule

Niko Peikrishvili contributed a hex_color validation rule in which the field under validation must contain a valid color value in hexadecimal:

$v = Validator::make(['color' => '#fff'], ['color' => 'hex_color']);
$v->passes(); // true
 
$v = Validator::make(['color' => '#ggg'], ['color' => 'hex_color']);
$v->passes(); // false

Andy Hinkle also contributed alpha channel support to the hex validation rule:

$v = Validator::make(['color' => '#FF000080'], ['color' => 'hex_color']);
$v->passes(); // true

Release notes

You can see the complete list of new features and updates below and the diff between 10.32.0 and 10.33.0 on GitHub. The following release notes are directly from the changelog:

v10.33.0

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Filed in

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 →
Fluent Rule Builders for All Laravel Validation Rules image

Fluent Rule Builders for All Laravel Validation Rules

Read article
Laravel URL AI Transformer: Extract Structured Data From URLs image

Laravel URL AI Transformer: Extract Structured Data From URLs

Read article
Rule Builders for Every Validation Rule in Laravel 13.36 image

Rule Builders for Every Validation Rule in Laravel 13.36

Read article
PHP News: A New Site for PHP Releases, RFCs, and Packages image

PHP News: A New Site for PHP Releases, RFCs, and Packages

Read article
Pause Polling in Background Tabs in Inertia.js v3.9 image

Pause Polling in Background Tabs in Inertia.js v3.9

Read article
Look What You Helped Me Build image

Look What You Helped Me Build

Read article