Never Miss a Laravel Release 🚀
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
filterandwhereStartsWithandthatStartWithtoIlluminate\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
ConfigurationUrlParserquery decoding (#33340) - Fixed exists in
Illuminate\Database\Eloquent\Relations\Concerns\AsPivot::delete()(#33347)
Changed
- Replace placeholder for dots and asterisks in validator (#33367)