Laravel 9.15 Released
The Laravel team released 9.15 with the ability to list only vendor routes, check if a filesystem folder is empty/not empty, an isJson() string helper, and more:
Only vendors listed in route:list command
Ash Allen contributed a --only-vendor flag to the route:list
command. Only vendor routes will appear in the terminal, and the command will ignore your application routes.
This flag is helpful to audit routes that packages may have installed that you're not aware of otherwise or if you are curious about what routes packages register.
HTTP client "throw unless" method
Mahmoud Mohamed Ramadan contributed a throwUnless()
function to the Laravel HTTP client. This method will throw an exception if a server or client error occurred and the given condition is false
:
$response = Http::post(/* ... */);
$response->throwUnless($condition);
String isJson() method
Daniel Eckermann contributed an isJson()
method to the Str
and Stringable classes to determine if a string is valid json:
Str::isJson($data);
//=> boolean
Str::of($data)->isJson()
//=> boolean
str($data)->isJson();
//=> boolean
Check if a filesystem directory is empty
@DarkGhostHunter contributed two methods to determine if a filesystem directory is empty or not:
use Illuminate\Support\Facades\File;
if (File::isDirectoryEmpty('john/photos')) {
return 'You do not have any photos';
}
if (File::isDirectoryNotEmpty('john/videos', true)) {
return 'You may have one or more videos, even hidden ones.';
}
Show route list counts
Ash Allen contributed a visual route count to the beginning and end of the route:list
CLI output:
Support kebab case for slot name shortcut
Waghabond contributed kebab-case for slot names:
<!-- /resources/views/components/my-layout.blade.php -->
<html lang="en">
<body>
{{ $mySlot }}
</body>
</html>
<!-- /resources/views/components/child.blade.php -->
<x-my-layout>
{{-- kebab-case slot name --}}
<x-slot:my-slot>
<div>My super cool content</div>
</x-slot:my-slot>
</x-my-layout>
Release Notes
You can see the complete list of new features and updates below and the diff between 9.14.0 and 9.15.0 on GitHub. The following release notes are directly from the changelog
v9.15.0 - 2022-05-31
Added
- Added --only-vendor option to route:list command (#42549)
- Added
Illuminate/Http/Client/PendingRequest::throwUnless()
(#42556) - Added
Illuminate/Support/Str::isJson()
(#42545) - Added
Illuminate/Filesystem/Filesystem::isEmptyDirectory()
(#42559) - Added
Add counts to route:list command
(#42551) - Support kebab case for slot name shortcut (#42574)
Revered
Fixed
- Fix getting '0' from route parameter in Authorize middleware (#42582)
Changed
- Retain the original attribute value during validation of an array key with a dot for correct failure message (#42395)
- Allow bootable test traits to teardown (#42521)
- Pass thrown exception to $sleepMilliseconds closure in retry helper (#42532)
- Make HasTimestamps::updateTimestamps chainable (#42533)
- Remove meaningless parameter in
Illuminate/View/Concerns/ManagesEvents
(#42546) - Map integer parameter to parameter name when resolving binding field (#42571)
- Conditionable should return HigherOrderWhenProxy only when the args number is exactly 1 (#42555)