diff --git a/authorization.md b/authorization.md
index b39480cc2cd..272b516ef84 100644
--- a/authorization.md
+++ b/authorization.md
@@ -223,7 +223,7 @@ Similar to the `before` method, if the `after` closure returns a non-null result
### Inline Authorization
-Occasionally, you may wish to determine if the currently authenticated user is authorized to perform a given action without writing a dedicate gate that corresponds to the action. Laravel allows you to perform these types of "inline" authorization checks via the `Gate::allowIf` and `Gate::denyIf` methods:
+Occasionally, you may wish to determine if the currently authenticated user is authorized to perform a given action without writing a dedicated gate that corresponds to the action. Laravel allows you to perform these types of "inline" authorization checks via the `Gate::allowIf` and `Gate::denyIf` methods:
```php
use Illuminate\Support\Facades\Auth;
@@ -233,7 +233,7 @@ Gate::allowIf(fn ($user) => $user->isAdministrator());
Gate::denyIf(fn ($user) => $user->banned());
```
-If the action is not authorized or if no user is currently authenticated, Laravel will automatically throw an `Illuminate\Auth\Access\AuthorizationException` exception. Instances of `AuthorizationException` are automatically converted to a 403 HTTP response by Laravel's exception handler:
+If the action is not authorized or if no user is currently authenticated, Laravel will automatically throw an `Illuminate\Auth\Access\AuthorizationException` exception. Instances of `AuthorizationException` are automatically converted to a 403 HTTP response by Laravel's exception handler.
## Creating Policies
diff --git a/blade.md b/blade.md
index 823630986fc..e09f908cc43 100644
--- a/blade.md
+++ b/blade.md
@@ -471,7 +471,7 @@ Blade also allows you to define comments in your views. However, unlike HTML com
Components and slots provide similar benefits to sections, layouts, and includes; however, some may find the mental model of components and slots easier to understand. There are two approaches to writing components: class based components and anonymous components.
-To create a class based component, you may use the `make:component` Artisan command. To illustrate how to use components, we will create a simple `Alert` component. The `make:component` command will place the component in the `App\View\Components` directory:
+To create a class based component, you may use the `make:component` Artisan command. To illustrate how to use components, we will create a simple `Alert` component. The `make:component` command will place the component in the `app/View/Components` directory:
php artisan make:component Alert
@@ -481,7 +481,7 @@ You may also create components within subdirectories:
php artisan make:component Forms/Input
-The command above will create an `Input` component in the `App\View\Components\Forms` directory and the view will be placed in the `resources/views/components/forms` directory.
+The command above will create an `Input` component in the `app/View/Components/Forms` directory and the view will be placed in the `resources/views/components/forms` directory.
#### Manually Registering Package Components
@@ -534,7 +534,7 @@ To display a component, you may use a Blade component tag within one of your Bla
-If the component class is nested deeper within the `App\View\Components` directory, you may use the `.` character to indicate directory nesting. For example, if we assume a component is located at `App\View\Components\Inputs\Button.php`, we may render it like so:
+If the component class is nested deeper within the `app/View/Components` directory, you may use the `.` character to indicate directory nesting. For example, if we assume a component is located at `app/View/Components/Inputs/Button.php`, we may render it like so:
diff --git a/broadcasting.md b/broadcasting.md
index 30cc935bcb5..9550a4b5889 100644
--- a/broadcasting.md
+++ b/broadcasting.md
@@ -252,7 +252,7 @@ When a user is viewing one of their orders, we don't want them to have to refres
namespace App\Events;
- use App\Order;
+ use App\Models\Order;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
diff --git a/configuration.md b/configuration.md
index 74c7d72b2c5..1e8d71bb43c 100644
--- a/configuration.md
+++ b/configuration.md
@@ -150,7 +150,7 @@ After placing the application in maintenance mode, you may navigate to the appli
When accessing this hidden route, you will then be redirected to the `/` route of the application. Once the cookie has been issued to your browser, you will be able to browse the application normally as if it was not in maintenance mode.
-> {tip} Your maintenance mode secret should typically consist of alpha-numeric characters and, optionally, dashes. You should avoid using characters that have special meaning in URLs such as `?`.
+> {tip} Your maintenance mode secret should typically consist of alpha-numeric characters and, optionally, dashes. You should avoid using characters that have special meaning in URLs such as `?` or `&`.
#### Pre-Rendering The Maintenance Mode View
diff --git a/documentation.md b/documentation.md
index 0caf2bb1dc5..774d3b7b070 100644
--- a/documentation.md
+++ b/documentation.md
@@ -91,4 +91,4 @@
- [Socialite](/docs/{{version}}/socialite)
- [Telescope](/docs/{{version}}/telescope)
- [Valet](/docs/{{version}}/valet)
-- [API Documentation](/api/8.x)
+- [API Documentation](https://api.laravel.com/docs/8.x/)
diff --git a/errors.md b/errors.md
index 779e78ee8dc..0ae6d8c77ce 100644
--- a/errors.md
+++ b/errors.md
@@ -7,6 +7,7 @@
- [Ignoring Exceptions By Type](#ignoring-exceptions-by-type)
- [Rendering Exceptions](#rendering-exceptions)
- [Reportable & Renderable Exceptions](#renderable-exceptions)
+ - [Mapping Exceptions By Type](#mapping-exceptions-by-type)
- [HTTP Exceptions](#http-exceptions)
- [Custom HTTP Error Pages](#custom-http-error-pages)
@@ -242,6 +243,33 @@ If your exception contains custom reporting logic that is only necessary when ce
> {tip} You may type-hint any required dependencies of the `report` method and they will automatically be injected into the method by Laravel's [service container](/docs/{{version}}/container).
+
+### Mapping Exceptions By Type
+
+Sometimes, third-party libraries used by your application may throw exceptions that you wish to make [renderable](#renderable-exceptions), but are unable to do so because you do not have control over the definitions of third-party exceptions.
+
+Thankfully, Laravel allows you to conveniently map these exceptions to other exception types that you manage within your application. To accomplish this, call the `map` method from your exception handler's `register` method:
+
+ use League\Flysystem\Exception;
+ use App\Exceptions\FilesystemException;
+
+ /**
+ * Register the exception handling callbacks for the application.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ $this->map(Exception::class, FilesystemException::class);
+ }
+
+If you would like more control over the creation of the target exception, you may pass a closure to the `map` method:
+
+ use League\Flysystem\Exception;
+ use App\Exceptions\FilesystemException;
+
+ $this->map(fn (Exception $e) => new FilesystemException($e));
+
## HTTP Exceptions
diff --git a/filesystem.md b/filesystem.md
index 436068d9089..6caf873e898 100644
--- a/filesystem.md
+++ b/filesystem.md
@@ -139,7 +139,7 @@ Typically, after updating the disk's credentials to match the credentials of the
### Caching
-To enable caching for a given disk, you may add a `cache` directive to the disk's configuration options. The `cache` option should be an array of caching options containing the `disk` name, the `expire` time in seconds, and the cache `prefix`:
+To enable caching for a given disk, you may add a `cache` directive to the disk's configuration options. The `cache` option should be an array of caching options containing the cache `store` name, the `expire` time in seconds, and the cache `prefix`:
's3' => [
'driver' => 's3',
diff --git a/fortify.md b/fortify.md
index 6d8b0788910..93978bd01c0 100644
--- a/fortify.md
+++ b/fortify.md
@@ -343,7 +343,7 @@ To disable two factor authentication, your application should make a DELETE requ
To begin implementing our application's registration functionality, we need to instruct Fortify how to return our "register" view. Remember, Fortify is a headless authentication library. If you would like a frontend implementation of Laravel's authentication features that are already completed for you, you should use an [application starter kit](/docs/{{version}}/starter-kits).
-All of the Fortify's view rendering logic may be customized using the appropriate methods available via the `Laravel\Fortify\Fortify` class. Typically, you should call this method from the `boot` method of your `App\Providers\FortifyServiceProvider` class:
+All of Fortify's view rendering logic may be customized using the appropriate methods available via the `Laravel\Fortify\Fortify` class. Typically, you should call this method from the `boot` method of your `App\Providers\FortifyServiceProvider` class:
```php
use Laravel\Fortify\Fortify;
diff --git a/homestead.md b/homestead.md
index d96bb530e89..a6bfda751cc 100644
--- a/homestead.md
+++ b/homestead.md
@@ -56,6 +56,7 @@ Homestead runs on any Windows, macOS, or Linux system and includes Nginx, PHP, M
+
- Ubuntu 20.04
- Git
- PHP 8.1
@@ -82,6 +83,7 @@ Homestead runs on any Windows, macOS, or Linux system and includes Nginx, PHP, M
- Xdebug
- XHProf / Tideways / XHGui
- wp-cli
+
@@ -96,6 +98,7 @@ Homestead runs on any Windows, macOS, or Linux system and includes Nginx, PHP, M
+
- Apache
- Blackfire
- Cassandra
@@ -125,6 +128,7 @@ Homestead runs on any Windows, macOS, or Linux system and includes Nginx, PHP, M
- TimescaleDB
- Trader (PHP extension)
- Webdriver & Laravel Dusk Utilities
+
diff --git a/middleware.md b/middleware.md
index 50b8f801043..d2b5b20f619 100644
--- a/middleware.md
+++ b/middleware.md
@@ -57,7 +57,6 @@ It's best to envision middleware as a series of "layers" HTTP requests must pass
> {tip} All middleware are resolved via the [service container](/docs/{{version}}/container), so you may type-hint any dependencies you need within a middleware's constructor.
-
#### Middleware & Responses
diff --git a/migrations.md b/migrations.md
index 9cf4a8c1631..1364a0fcd0d 100644
--- a/migrations.md
+++ b/migrations.md
@@ -883,7 +883,7 @@ Modifier | Description
`->unsigned()` | Set INTEGER columns as UNSIGNED (MySQL).
`->useCurrent()` | Set TIMESTAMP columns to use CURRENT_TIMESTAMP as default value.
`->useCurrentOnUpdate()` | Set TIMESTAMP columns to use CURRENT_TIMESTAMP when a record is updated.
-`->virtualAs($expression)` | Create a virtual generated column (MySQL).
+`->virtualAs($expression)` | Create a virtual generated column (MySQL / PostgreSQL / SQLite).
`->generatedAs($expression)` | Create an identity column with specified sequence options (PostgreSQL).
`->always()` | Defines the precedence of sequence values over input for an identity column (PostgreSQL).
`->isGeometry()` | Set spatial column type to `geometry` - the default type is `geography` (PostgreSQL).
diff --git a/octane.md b/octane.md
index 416aab51b0f..0137f492a89 100644
--- a/octane.md
+++ b/octane.md
@@ -458,8 +458,8 @@ While building your application, you should take special care to avoid creating
When using Swoole, you may execute operations concurrently via light-weight background tasks. You may accomplish this using Octane's `concurrently` method. You may combine this method with PHP array destructuring to retrieve the results of each operation:
```php
-use App\User;
-use App\Server;
+use App\Models\User;
+use App\Models\Server;
use Laravel\Octane\Facades\Octane;
[$users, $servers] = Octane::concurrently([
diff --git a/queues.md b/queues.md
index 8566649757f..1423b9fd4b9 100644
--- a/queues.md
+++ b/queues.md
@@ -263,7 +263,7 @@ In certain cases, you may want to define a specific "key" that makes the job uni
## Support Policy
-For all Laravel releases, bug fixes are provided for 18 months and security fixes are provided for 2 years. For all additional libraries, including Lumen, only the latest release receives bug fixes. In addition, please review the database versions [supported by Laravel](/docs/{{version}}/database#introduction).
+For all Laravel releases, bug fixes are provided for 18 months and security fixes are provided for 2 years. For all additional libraries, including Lumen, only the latest major release receives bug fixes. In addition, please review the database versions [supported by Laravel](/docs/{{version}}/database#introduction).
| Version | PHP (*) | Release | Bug Fixes Until | Security Fixes Until |
| --- | --- | --- | --- | --- |
| 6 (LTS) | 7.2 - 8.0 | September 3rd, 2019 | January 25th, 2022 | September 6th, 2022 |
| 7 | 7.2 - 8.0 | March 3rd, 2020 | October 6th, 2020 | March 3rd, 2021 |
| 8 | 7.3 - 8.1 | September 8th, 2020 | July 26th, 2022 | January 24th, 2023 |
-| 9 | 8.0 - 8.1 | February 8th, 2022 | August 8th, 2023 | February 8th, 2024 |
-| 10 | 8.0 - 8.1 | February 7th, 2023 | August 7th, 2024 | February 7th, 2025 |
+| 9 | 8.0 - 8.1 | February 8th, 2022 | August 8th, 2023 | February 6th, 2024 |
+| 10 | 8.1 - 8.3 | February 14th, 2023 | August 6th, 2024 | February 4th, 2025 |
@@ -170,7 +170,7 @@ Laravel's job batching feature allows you to easily execute a batch of jobs and
The new `batch` method of the `Bus` facade may be used to dispatch a batch of jobs. Of course, batching is primarily useful when combined with completion callbacks. So, you may use the `then`, `catch`, and `finally` methods to define completion callbacks for the batch. Each of these callbacks will receive an `Illuminate\Bus\Batch` instance when they are invoked:
use App\Jobs\ProcessPodcast;
- use App\Podcast;
+ use App\Models\Podcast;
use Illuminate\Bus\Batch;
use Illuminate\Support\Facades\Bus;
use Throwable;
diff --git a/routing.md b/routing.md
index cb8fc813a63..23d6d977408 100644
--- a/routing.md
+++ b/routing.md
@@ -414,7 +414,6 @@ Typically, implicit model binding will not retrieve models that have been [soft
return $user->email;
})->withTrashed();
-
#### Customizing The Key
diff --git a/session.md b/session.md
index ecbf47b86e7..63b792d7dbf 100644
--- a/session.md
+++ b/session.md
@@ -182,7 +182,7 @@ The `pull` method will retrieve and delete an item from the session in a single
$value = $request->session()->pull('key', 'default');
-
+
#### Incrementing & Decrementing Session Values
If your session data contains an integer you wish to increment or decrement, you may use the `increment` and `decrement` methods:
diff --git a/starter-kits.md b/starter-kits.md
index d905368f9aa..27fafdca23a 100644
--- a/starter-kits.md
+++ b/starter-kits.md
@@ -37,7 +37,7 @@ php artisan migrate
Once you have created a new Laravel application, you may install Laravel Breeze using Composer:
```bash
-composer require laravel/breeze --dev
+composer require laravel/breeze:1.9.2
```
After Composer has installed the Laravel Breeze package, you may run the `breeze:install` Artisan command. This command publishes the authentication views, routes, controllers, and other resources to your application. Laravel Breeze publishes all of its code to your application so that you have full control and visibility over its features and implementation. After Breeze is installed, you should also compile your assets so that your application's CSS file is available:
@@ -74,7 +74,7 @@ php artisan migrate
### Breeze & Next.js / API
-Laravel Breeze can also scaffold an authentication API that is ready to authenticate modern JavaScript applications such as those powered by [Next](https://nextjs.org), [Nuxt](https://nuxtjs.org), and others. To get started, specify the `api` stack as your desired stack when executing the `breeze:install` Artisan command:
+Laravel Breeze can also scaffold an authentication API that is ready to authenticate modern JavaScript applications such as those powered by [Next](https://nextjs.org), [Nuxt](https://nuxt.com), and others. To get started, specify the `api` stack as your desired stack when executing the `breeze:install` Artisan command:
```nothing
php artisan breeze:install api
@@ -96,4 +96,4 @@ While Laravel Breeze provides a simple and minimal starting point for building a
Jetstream provides a beautifully designed application scaffolding for Laravel and includes login, registration, email verification, two-factor authentication, session management, API support via Laravel Sanctum, and optional team management. Jetstream is designed using [Tailwind CSS](https://tailwindcss.com) and offers your choice of [Livewire](https://laravel-livewire.com) or [Inertia.js](https://inertiajs.com) driven frontend scaffolding.
-Complete documentation for installing Laravel Jetstream can be found within the [official Jetstream documentation](https://jetstream.laravel.com/2.x/introduction.html).
+Complete documentation for installing Laravel Jetstream can be found within the [official Jetstream documentation](https://jetstream.laravel.com/introduction.html).
diff --git a/upgrade.md b/upgrade.md
index ebcc3f3d962..90c0a1cfd06 100644
--- a/upgrade.md
+++ b/upgrade.md
@@ -194,8 +194,8 @@ The [maintenance mode](/docs/{{version}}/configuration#maintenance-mode) feature
define('LARAVEL_START', microtime(true));
- if (file_exists(__DIR__.'/../storage/framework/maintenance.php')) {
- require __DIR__.'/../storage/framework/maintenance.php';
+ if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
+ require $maintenance;
}