Laravel Folio — це система маршрутизації на основі сторінок, представлена Laravel на LaraconUS 2023. За допомогою Folio ви можете зіставити маршрут з певним файлом або текою, подібно до файлових систем маршрутизації, які можна знайти у фреймворках, таких як NextJS або NuxtJS.
Як це працює
Після встановлення Folio у вашу програму ви можете створити нову сторінку за допомогою такої команди ремісника:php ремісник make:
folio index
Це помістить новий файл у новий каталог сторінок, розташований за адресою resources/views/pages/index.blade.php
Тепер, коли ви відвідуєте вашу програму в браузері, вона завантажить цей шаблон як домашню сторінку.
Сторінки
підстановки Ми також можемо створювати динамічні сторінки, використовуючи символи узагальнення. Як приклад, скажімо, що ми хотіли відвідати маршрут, який виглядає як /users/1
. Ми могли б створити файл з іменем [id].blade.php всередині папки користувачів, наприклад
: ├── ресурси │ ├── переглядів │ │ ├── сторінки │ │ │ ├── користувачі │ │ │ │ ├── [id].blade.php
Усередині файлу тепер ми матимемо доступ до $id, які можна використовувати для пошуку користувача.
Зробивши цей крок далі, ми можемо скористатися перевагами прив'язки моделі маршруту та перейменувати наш файл так, щоб він виглядав як ресурси [User:id].blade.php
├─── │ ├── переглядів │ │ ├── сторінки │ │ │ ├── користувачі │ │ │ │ ├── [Користувач:id].blade.php
Усередині цього файлу ми тепер матимемо доступ до $user
об'єкта.
Якби замість цього ми хотіли вказати ім'я користувача в параметрі URL, ми могли б легко перейменувати файл на [User:username].blade.php. Потім, відвідавши URL-адресу нашої програми за адресою/users/taylorotwell
, ми отримаємо доступ до об'єкта користувача, ім'я користувача якого - taylorotwell. Ось приклад:
<x-layout> <h1>Привіт {{ $user->ім'я }}</h1> </x-layout>
Wildcard каталоги
We can also create Wildcard каталоги. 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
Ми також можемо створювати динамічні каталоги з динамічними сторінками, наприклад
: ├── ресурси │ ├── переглядів │ │ ├── сторінки │ │ │ ├── користувачі │ │ │ │ ├── [Користувач] │ │ │ │ │ ├── пости │ │ │ │ │ ├── [Пост:slug].blade.php
Це дозволить нам отримати доступ до маршруту в нашому додатку, який виглядає як: /users/1/posts/folio-is-awesome
. Коли доступ до цього маршруту буде доступний, Folio спробує знайти поштовий слимак folio-is-awesome, який належить ідентифікатору користувача 1.
Folio Middleware
Ви також можете скористатися перевагами Middleware з маршрутизацією на основі сторінок. Використовуючи приклад публікацій з попереднього розділу, ми можемо досягти цього, додавши нову політику всередині каталогу додатків / політик, наприклад так:
<?php простір імен App\Policies; використовуйте App\Models\Post; використовувати App\Models\User; клас PostPolicy { Подання публічної функції(? User $user, Post $post){ { повернення false; Повернення логіки, яка дозволяє або забороняє доступ } }
Потім всередині подання ми можемо додати наступний код:
<?php використовувати функцію Laravel\Folio\{middleware}; middleware(['can:view,post']); ?> <x-макет> <h1>{{ $post->title }}</h1> <стаття>{!! $post->тіло !!} </стаття> </x-layout>
Якщо користувач не має доступу, він побачить заборонений код 403; в іншому випадку він зможе переглянути публікацію 👍
Багатосегментні сторінки
Також можна створити файл, який повертатиме на сторінку всі сегменти 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.