Laravel 10.33 Released
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: