The Laravel team released v7.18.0 with an HTTP client middleware method and view component attribute updates, along with the latest new features, fixes, and changes in the 7.x branch:
HTTP withMiddleware
Hannes Van De Vreken contributed a withMiddleware
method to the framework’s HTTP client. It uses Guzzle’s handler stack to push a user-defined middleware to the stack:
$client = new \Illuminate\Http\Client\PendingRequest(); $debugBar = new \DebugBar\StandardDebugBar(); // Get data collector.$timeline = $debugBar->getCollector('time'); // Wrap the timeline.$profiler = new \GuzzleHttp\Profiling\Debugbar\Profiler($timeline); // Add middleware to the handler stack$client->withMiddleware(new \GuzzleHttp\Profiling\Middleware($profiler));
View Component Attribute Features
Kevin McKee contributed making the ComponentAttributeBag
macroable. If you’re interested in the benefits I recommend checking out Pull Request #33354 which has the details.
Along with this PR, Taylor Otwell contributed more ComponentAttributeBag
methods, including filter
, whereStartsWith
, and thatStartWith
(an alias of whereStartsWith
):
$this->assertSame('class="font-bold"', (string) $bag->whereStartsWith('class'));
Kevin also contributed a ComponentAttributeBag::first
method to get the first attribute from a ComponentAttributeBag
instance:
{{ $attributes->thatStartWith('wire:model')->first() }}
New Scheduler Frequencies
Sjors Ottjes contributed new scheduling methods to the scheduler (via the ManagesFrequencies
trait) adds some syntactic sugar for one, two, and three minute schedules:
// Before$schedule->job(SyncSomething::class)->cron('*/2 * * * *'); // every 2 minutes // After, new methods$schedule->job(SyncSomething::class)->everyTwoMinutes(); // PR also adds everyThreeMinutes and everyFourMinutes$schedule->job(SyncSomething::class)->everyThreeMinutes();$schedule->job(SyncSomething::class)->everyFourMinutes();
Release Notes
You can see the full list of new features and updates below and the diff between 7.17.0 and 7.18.0 on GitHub.
v7.18.0
Added
- Added
Illuminate\Http\Client\PendingRequest::withMiddleware()
(#33315, b718d3a) - Make ComponentAttributeBag Macroable (#33354)
- Added
filter
andwhereStartsWith
andthatStartWith
toIlluminate\View\ComponentAttributeBag
(0abe2db, 07ee3e8) - Added
Illuminate\Database\Eloquent\Collection::toQuery()
(#33356, 15586fa) - Added
first()
toIlluminate\View\ComponentAttributeBag
(#33358, 731b94f) - Added
everyTwoMinutes()
|everyThreeMinutes()
|everyFourMinutes()
methods toIlluminate/Console/Scheduling/ManagesFrequencies
(#33379)
Fixed
- Fixed
ConfigurationUrlParser
query decoding (#33340) - Fixed exists in
Illuminate\Database\Eloquent\Relations\Concerns\AsPivot::delete()
(#33347)
Changed
- Replace placeholder for dots and asterisks in validator (#33367)