The Laravel team released 9.8 with accessing default form data from an Eloquent model, custom log levels per exception type, discovering anonymous components in additional paths, and more:
Laravel 9.8.0 is available today and includes several cool new features! 🔥
— Taylor Otwell 🪐 (@taylorotwell) April 12, 2022
First, a quality of life boost for the "old" helper. You can now pass a model as the second, "default" argument. The function will assume the attribute name based on the first argument. ✅ pic.twitter.com/1Mee6Tv20j
The "old" Form Helper Accepts a Model
Andrew Arscott contributed an update to the old()
helper that allows a model as the second default argument:
1<input type="text" name="name" value="{{ old('name', $user->name) }}">2 3{{-- 🔥 --}}4<input type="text" name="name" value="{{ old('name', $user) }}">
Allow a Custom Log Level in Exception Handling
Tom Witkowski contributed the ability to customize the log level for reported exceptions in the exception handler:
1use PDOException; 2use Psr\Log\LogLevel; 3 4/** 5 * A list of exception types with their corresponding custom log levels. 6 * 7 * @var array<class-string<\Throwable>, \Psr\Log\LogLevel::*> 8 */ 9protected $levels = [10 PDOException::class => LogLevel::CRITICAL11];
See Pull Request #41925 for implementation details.
Discover Anonymous Blade Components in Additional Paths
Ralph J. Smit contributed the ability to discover anonymous Blade components in additional paths:
1public function boot()2{3 Blade::anonymousComponentNamespace('flights.bookings', 'flights');4}
Here's an example of anonymous component usage:
1<x-flights::panel :flight="$flight" />
Set Factory Method
Ralph J. Smit contributed a model factory set()
method to set a single model attribute:
1// Before 2EloquentModel::factory() 3 ->create(['name' => 'foo']); 4 5// After 6EloquentModel::factory() 7 ->set('name', 'foo') 8 ->create(); 9 10// Before11EloquentModel::factory()12 ->someMethod()13 ->create(['country' => 'NL']);14 15// After16EloquentModel::factory()17 ->someMethod()18 ->set('country', 'NL')19 ->create();
Release Notes
You can see the complete list of new features and updates below and the diff between 9.7.0 and 9.8.0 on GitHub.
Filed in:
Full stack web developer. Author of Lumen Programming Guide and Docker for PHP Developers.