Overview Laravel 11.23 introduces a significant suite of quality-of-life improvements designed to streamline developer workflows and enhance application performance. This release focuses on reducing boilerplate in Blade templates, expanding BackedEnum support in authorization, and introducing the much-anticipated `defer` helper for background task execution. Prerequisites To follow this guide, you should be comfortable with PHP 8.2+, have a basic understanding of Laravel's Query Builder and Blade templating engine, and understand the concept of authorization gates. Key Libraries & Tools * **Laravel 11.23**: The core framework update featuring these new utilities. * **Livewire**: Often used in conjunction with these helpers for reactive frontends. * **Eloquent**: Laravel's ORM which receives mirrored methods in the query builder. Code Walkthrough The Blade `when` Helper Before this release, conditionally adding attributes in Blade felt clunky. You either used ternary operators with empty strings or wrapped elements in `@if` blocks. The new `when` helper cleans this up significantly. ```blade <div {{ when($shouldPoll, 'wire:poll') }}> <!-- Content --> </div> ``` Laravel only renders the attribute if `$shouldPoll` evaluates to true, removing the need for an explicit "else" case or empty strings. Database & Collection Enhancements Laravel brings consistency to the Query Builder and Collections by porting popular Eloquent methods. You can now use `firstOrFail` directly on a DB table query. ```python Using Query Builder $user = DB::table('users')->where('email', '[email protected]')->firstOrFail(); Using Collections $users = User::all(); $user = $users->findOrFail(200); // Throws ModelNotFoundException if missing ``` Deferring Heavy Tasks One of the most powerful additions is the `defer` function. It allows you to send a response to the user immediately while continuing to execute a task in the background without setting up a full queue system. ```php public function store() { // Logic... defer(fn () => Analytics::track($data)); return response()->json(['message' => 'Success']); } ``` Syntax Notes * **Gate Enums**: You can now pass BackedEnum instances directly to `Gate::allows(Permission::Edit)` instead of calling `Permission::Edit->value`. * **Validation**: The `confirmed` rule now accepts a custom field name: `confirmed:custom_password_field`. Practical Examples * **Image Handling**: Use `min_ratio` and `max_ratio` validation rules to prevent users from uploading ultra-wide or ultra-tall images that break your UI layout. * **User Experience**: Use `defer` for sending webhooks or tracking analytics where the user shouldn't wait for the third-party API response to see their dashboard. Tips & Gotchas * **Deferred execution**: Remember that `defer` still consumes your web server's resources. For extremely long-running tasks, a dedicated Redis queue remains the best practice. * **Query Builder**: `firstOrFail` on the query builder returns a generic `stdClass` object, not an Eloquent model, though it still throws the `ModelNotFoundException`.
Laravel Gates
Products
Sep 2024 • 1 videos
High activity month for Laravel Gates. Laravel among the most active voices, with 1 videos across 1 sources.
Sep 2024
- Sep 17, 2024