Laravel 7.18 Released

Laravel 7.18 Released

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 and whereStartsWith and thatStartWith to Illuminate\View\ComponentAttributeBag (0abe2db, 07ee3e8)
  • Added Illuminate\Database\Eloquent\Collection::toQuery() (#33356, 15586fa)
  • Added first() to Illuminate\View\ComponentAttributeBag (#33358, 731b94f)
  • Added everyTwoMinutes() | everyThreeMinutes() | everyFourMinutes() methods to Illuminate/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)

Filed in: News / Releases

Newsletter

Join 31,000+ others and never miss out on new tips, tutorials, and more.

Laravel News Partners

Laravel Jobs

Laravel Senior Developer
Remote, Canada Only
BeMo Academic Consulting
Senior Fullstack Developer / Architect (w/m/d)
Remote / Munich - Germany
envivo.select GmbH
Medior full stack developer (Laravel)
Deventer (or remote) in the Netherlands, Dutch speaking required.
MSML B.V.
Senior Full Stack PHP Developer (Laravel)
Remote
MAPPEN
Senior Laravel Developer
Remote
ACTO