Laravel Folio — это система маршрутизации на основе страниц, представленная Laravel на выставке LaraconUS 2023. С помощью Folio вы можете сопоставить маршрут с определенным файлом или папкой, подобно файловым системам маршрутизации, которые можно найти в таких фреймворках, как NextJS или NuxtJS.
Как это работает
После установки Folio в приложение можно создать новую страницу с помощью следующей команды artisan:php artisan make:
folio index
Это поместит новый файл в новый каталог страниц, расположенный по адресу resources/views/pages/index.blade.php
Теперь при посещении вашего приложения в браузере он будет загружать этот шаблон в качестве домашней страницы.
Страницы с подстановочными знаками Мы
также можем создавать динамические страницы с помощью подстановочных знаков. В качестве примера скажем, что мы хотели посетить маршрут, который выглядит как /users/1
. Мы могли бы создать файл с именем [id].blade.php внутри папки пользователей, например
:├── ресурсы │ ├── просмотров │ │ ├── страницы │ │ │ ├── пользователей │ │ │ │ ├── [id].blade.php
Внутри файла теперь у нас будет доступ к $id, которые можно использовать для поиска пользователя.
Сделав еще один шаг вперед, мы можем воспользоваться привязкой модели маршрута и переименовать наш файл, чтобы он выглядел следующим образом: [User:id].blade.php
├── resources │ ├── просмотров │ │ ├── страницы │ │ │ ├── пользователей │ │ │ │ ├── [User:id].blade.php
Внутри этого файла у нас теперь будет доступ к объекту$user
.
Если бы вместо этого мы хотели указать имя пользователя в параметре URL, мы могли бы легко переименовать файл в [User:username].blade.php. Затем, посетив URL-адрес нашего приложения по адресу/users/taylorotwell
, мы получим доступ к объекту пользователя, имя пользователя которого taylorotwell. Вот пример:
<x-layout> <h1>Hello {{ $user->name }}</h1> </X-макет>
Каталоги с подстановочными знаками
We can also create Каталоги с подстановочными знаками. To illustrate this example, say that we wanted to create an info page for every user. We could create a dynamic URL that looks like: /users/taylorotwell/info, by creating the following folder structure:
├── ресурсы │ ├── просмотров │ │ ├── страницы │ │ │ ├── пользователей │ │ │ │ ├── [Пользователь:имя пользователя] │ │ │ │ │ ├── info.blade.php
Мы также можем создавать динамические каталоги с динамическими страницами, например:
├── ресурсы │ ├── просмотров │ │ ├── страницы │ │ │ ├── пользователей │ │ │ │ ├── [Пользователь] │ │ │ │ │ ├── сообщения │ │ │ │ │ │ ├── [Post:slug].blade.php
Это позволит нам получить доступ к маршруту в нашем приложении, который выглядит следующим образом: /users/1/posts/folio-is-awesome
. При доступе к этому маршруту Folio попытается найти слаг сообщения folio-is-awesome, принадлежащий идентификатору пользователя 1.
Промежуточное ПО
фолио Вы также можете воспользоваться преимуществами ПО промежуточного слоя с маршрутизацией на основе страниц. Используя пример сообщений из предыдущего раздела, мы можем сделать это, добавив новую политику в каталог app/Policies, например: <
?php пространство имен App\Policies; используйте App\Models\Post; использовать App\Models\User; класс PostPolicy { Представление публичной функции(? User $user, Post $post){ { return false; Возвращает логику, которая разрешает или запрещает доступ } }
Затем внутри представления мы можем добавить следующий код:
<?php использовать функцию Laravel\Folio\{middleware}; промежуточное ПО(['can:view,post']); ?> <Х-макет> <h1>{{ $post->title }}</h1> <article>{!! $post->body!!} </статья> </X-макет>
Если у пользователя нет доступа, он увидит код 403 Forbidden; в противном случае он сможет просмотреть сообщение 👍
Многосегментные страницы
Вы также можете создать файл, который будет возвращать все сегменты в URL-адресе на страницу. Например, если у нас есть структура папок, которая выглядит следующим образом:
├── ресурсы │ ├── просмотров │ │ ├── страницы │ │ │ ├── мульти │ │ │ │ ├── [... ids].blade.php
Он захватит URL-адрес, расположенный по адресу /multi/1/2/3
, возвращая на страницу массив $id.
Заключение
Using Laravel Folio Laravel Folio we can create routes in our application by adding files or folders inside of the pages view directory. You may also choose to mix Page-based routes and traditional routes within your application.
You can learn more about Laravel Folio Laravel Folio by visiting the Github Repo at https://github.com/laravel/folio. You may also be interested in pairing Laravel Folio Laravel Folio with Volt (single-file livewire components), this will give you the power of Livewire inside of your pages.