• Время чтения ~1 мин
  • 28.07.2023

Laravel Folio — это система маршрутизации на основе страниц, представленная Laravel на выставке LaraconUS 2023. С помощью Folio вы можете сопоставить маршрут с определенным файлом или папкой, подобно файловым системам маршрутизации, которые можно найти в таких фреймворках, как NextJS или NuxtJS.

Laravel Folio Laravel Folio Screenshot

Как это работает

После установки Folio в приложение можно создать новую страницу с помощью следующей команды artisan:php artisan make:

folio index

Это поместит новый файл в новый каталог страниц, расположенный по адресу resources/views/pages/index.blade.php

pages.png

Теперь при посещении вашего приложения в браузере он будет загружать этот шаблон в качестве домашней страницы.

Страницы с подстановочными знаками Мы

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

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