Laravel 10.12 Released
Published on by Paul Redmond
The Laravel team released v10.12 with conditional methods added to Sleep, a new job timeout event, timezone validation parameters, and more:
Conditional sleep
Bradie Tilley contributed the ability to add conditions to the new Sleep class introduced in Laravel 10.10:
Sleep::for(1)->second()->unless($task->completed());Sleep::for(1)->second()->when($task->pending()); // ClosuresSleep::for(1)->second()->unless(fn () => $task->completed());Sleep::for(1)->second()->when(fn () => $task->pending());
Job timeout occurred event
Saeed Hosseini contributed a JobTimedOut
event that a queue worker fires when the job has timed out:
use Illuminate\Queue\Events\JobTimedOut; /** * The event to listener mappings for the application. * * @var array<class-string, array<int, class-string>> */protected $listen = [ JobTimedOut::class => [ SendJobTimedOutNotification::class, ],];
Inline attachment support for Markdown mailables
Nuno Maduro contributed inline attachment support for Markdown mailables:
This pull request fixes markdown access to
$message
variable on template, by simply lazy render the markdown on the moment the$message
variable as already available as view data.
See Pull Request #47140 for details.
Method not allowed HTTP assertion
Azim Kordpour contributed an assertion for HTTP status 405
(Method Not Allowed) that you can use to verify a route doesn't respond to certain HTTP verbs:
$this->get('/')->assertOk(); $this->post('/')->assertMethodNotAllowed();$this->patch('/')->assertMethodNotAllowed();$this->put('/')->assertMethodNotAllowed();$this->delete('/')->assertMethodNotAllowed();
Eloquent forceCreateQuietly() method
Volodya Kurshudyan contributed a forceCreateQuietly()
method to Eloquent that forces the creation of a model without triggering any model events:
Post::forceCreateQuietly($data);
Add parameters to timezone validation rule
Artyom Yavdoshchuk added support for using parameters with the timezone
validation rule:
'timezone' // works as before'timezone:Africa' // accepts only Africans timezones'timezone:All' // works the same as without any parameters'timezone:All_with_BC' // accepts timezones with Backward Compatibility (Europe/Kiev will be accepted)'timezone:Per_country,US' // accepts only US timezones
Here's an example from the pull request test cases:
$v = new Validator( $trans, ['foo' => 'australia/sydney'], ['foo' => 'Timezone:Australia']); $this->assertFalse($v->passes());
Release Notes
You can see the complete list of new features and updates below and the diff between 10.11.0 and 10.12.0 on GitHub. The following release notes are directly from the changelog:
v10.12.0
Added
- Added
Illuminate/Queue/Events/JobTimedOut.php
(#47068) - Added
when()
andunless()
methods toIlluminate/Support/Sleep
(#47114) - Adds inline attachments support for markdown mailables (#47140)
- Added
Illuminate/Testing/Concerns/AssertsStatusCodes::assertMethodNotAllowed()
(#47169) - Added
forceCreateQuietly
method (#47162) - Added parameters to timezone validation rule (#47171)
Fixed
- Fixes singleton and api singletons creatable|destryoable|only|except combinations (#47098)
- Don't use empty key or secret for DynamoDBClient (#47144)
Changed
- Remove session on authenticatable deletion (#47141)
- Added error handling and ensure re-enabling of foreign key constraints in
Illuminate/Database/Schema/Builder::withoutForeignKeyConstraints()
(#47182)
Refactoring
- Remove useless else statements (#47161)