News

Laravel 9.39 Released

Published
Laravel 9.39 Released image

Release updates

Never miss a Laravel release

Get an email whenever a new Laravel release lands.

The Laravel team released 9.39 this week with Blade template fragments, source output in collection dumps, a new database empty assertion, and more.

Blade template fragments

Bruno Alod contributed Blade template fragments, which render a portion of the view. Fragments are helpful for frontend frameworks that expect HTML over-the-wire, where AJAX responses should only return part of the view.

Given the following Blade template:

<div>
First Name {{ $firstName }}
Last Name: {{ $lastName }}
 
@fragment('actions')
<div hx-target="this">
@if($enabled)
<button hx-patch="/mark-as-disabled">Mark as Disabled</button>
@else
<button hx-patch="/mark-as-enabled">Mark as Enabled</button>
@endif
</div>
@endfragment
</div>

You can render only the actions fragment as follows:

view('users.profile', $data)->fragment('actions');

Add the source file to Collection dd() calls

Hasyirin Fakhriy added the source file path when using dd() in collections. In recent releases of Laravel, dd() and dump() calls have started including path traces to make it clear which file is dumping output. This update targets collections to benefit from that work as well:

Collection::make([
'version' => App::version(),
])->dd();
 
/*
array:1 [▼ // routes/web.php:19
"version" => "9.39.0"
]
*/

Assert if the database is empty

Christoph Rumpel contributed an assertDatabaseEmpty() which checks if a specific table has no entries. It is a shortcut to asserting database count of zero:

// Using count
$this->assertDatabaseCount(MyModel::class, 0);
 
// Using the new assertion in v9.39
$this->assertDatabaseEmpty(MyModel::class);

Release Notes

You can see the complete list of new features and updates below and the diff between 9.38.0 and 9.39.0 on GitHub. The following release notes are directly from the changelog:

v9.39.0

Added

  • Added template fragments to Blade (#44774)
  • Added source file to Collection's dd method output (#44793, d2e0e85)
  • Added Illuminate/Support/Testing/Fakes/PendingBatchFake::dispatchAfterResponse() (#44815)
  • Added Illuminate/Foundation/Testing/Concerns/InteractsWithDatabase::assertDatabaseEmpty() (#44810)

Fixed

  • Fixed InteractsWithContainer::withoutMix() (#44822)

Changed

  • Update UpCommand::handle that must return int (#44807)
  • Decouple database component from console component (#44798)
  • Improve input argument parsing for commands (#44662, #44826)
  • Added DatabaseBatchRepository to provides() in BusServiceProvider (#44833)
  • Move reusable onNotSuccessfulTest functionality to TestResponse (#44827)
  • Add CSP nonce to Vite reactRefresh inline script (#44816)
  • Allow route group method to be chained (#44825)
  • Remove __sleep() & __wakeup() from SerializesModels trait. (#44847)
  • Handle SQLite without ENABLE_DBSTAT_VTAB enabled in Illuminate/Database/Console/DatabaseInspectionCommand::getSqliteTableSize() (#44867)
  • Apply force flag when necessary in Illuminate/Queue/Listener (#44862)
  • De-couple Console component from framework (#44864)
  • Update Vite mock to return empty array for preloadedAssets (#44858)
Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

tinkerwell logo
Tinkerwell

Enjoy coding and debugging in an editor designed for fast feedback and quick iterations. It's like a shell for your application – but with multi-line editing, code completion, and more.

Visit Tinkerwell

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article