• Час читання ~3 хв
  • 28.07.2023

Laravel Folio — це система маршрутизації на основі сторінок, представлена Laravel на LaraconUS 2023. За допомогою Folio ви можете зіставити маршрут з певним файлом або текою, подібно до файлових систем маршрутизації, які можна знайти у фреймворках, таких як NextJS або NuxtJS.

Laravel Folio Laravel Folio Screenshot

Як це працює

Після встановлення Folio у вашу програму ви можете створити нову сторінку за допомогою такої команди ремісника:php ремісник make:

folio index

Це помістить новий файл у новий каталог сторінок, розташований за адресою resources/views/pages/index.blade.php

pages.png

Тепер, коли ви відвідуєте вашу програму в браузері, вона завантажить цей шаблон як домашню сторінку.

Сторінки

підстановки Ми також можемо створювати динамічні сторінки, використовуючи символи узагальнення. Як приклад, скажімо, що ми хотіли відвідати маршрут, який виглядає як /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.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297