• Czas czytania ~4 min
  • 28.07.2023

Laravel Folio to system routingu oparty na stronach wprowadzony do Laravel na LaraconUS 2023. Za pomocą Folio można mapować trasę do określonego pliku lub folderu, podobnie jak w systemach routingu opartych na plikach, które można znaleźć w strukturach takich jak NextJS lub NuxtJS.

Laravel Folio Laravel Folio Screenshot

Jak to działa

Po zainstalowaniu folio w aplikacji można utworzyć nową stronę z następującym poleceniem rzemieślniczym:php artisan make:

folio index

Spowoduje to umieszczenie nowego pliku w nowym katalogu stron znajdującym się w resources/views/pages/index.blade.php

pages.png

Teraz podczas odwiedzania aplikacji w przeglądarce załaduje ten szablon jako stronę główną.

Strony

wieloznaczne Możemy również tworzyć dynamiczne strony za pomocą symboli wieloznacznych. Jako przykład powiedzmy, że chcieliśmy odwiedzić trasę, która wygląda jak /users/1. Możemy utworzyć plik o nazwie [id].blade.php wewnątrz folderu użytkowników, na przykład tak:

├── resources
│ ├── widoki
│ │ ├── strony
│ │ │ ├── użytkownicy
│ │ │ │ ├── [id].blade.php

Wewnątrz pliku będziemy mieli teraz dostęp do $id, które można wykorzystać do wyszukania użytkownika.

Idąc o krok dalej, możemy skorzystać z powiązania modelu trasy i zmienić nazwę naszego pliku, aby wyglądał jak [User:id].blade.php

├── resources
│ ├── widoki
│ │ ├── strony
│ │ │ ├── użytkownicy
│ │ │ │ ├── [User:id].blade.php

Wewnątrz tego pliku będziemy mieli teraz dostęp do $user obiektu.

Gdybyśmy zamiast tego chcieli określić nazwę użytkownika w parametrze URL, moglibyśmy łatwo zmienić nazwę pliku na [User:username].blade.php. Następnie odwiedzenie adresu URL naszej aplikacji da /users/taylorotwell nam dostęp do obiektu użytkownika, którego nazwa użytkownika to taylorotwell. Oto przykład:

<x-layout>
    <h1>Witam {{ $user->nazwa }}</h1>
</x-layout>

Katalogi symboli wieloznacznych

We can also create Katalogi symboli wieloznacznych. 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:

├── resources
│ ├── widoki
│ │ ├── strony
│ │ │ ├── użytkownicy
│ │ │ │ ├── [użytkownik:nazwa_użytkownika]
│ │ │ │ │ ├── info.blade.php

Możemy również tworzyć dynamiczne katalogi z dynamicznymi stronami, takie jak:

├── zasoby
│ ├── widoki
│ │ ├── strony
│ │ │ ├── użytkownicy
│ │ │ │ ├── [Użytkownik]
│ │ │ │ │ ├── posty
│ │ │ │ │ ├── [Post:ślimak].blade.php

Umożliwi nam to dostęp do trasy w naszej aplikacji, która wygląda następująco: /users/1/posts/folio-is-awesome. Po uzyskaniu dostępu do tej trasy Folio spróbuje znaleźć post slug folio-is-awesome, który należy do identyfikatora użytkownika 1.

Oprogramowanie pośredniczące folio Można również korzystać z oprogramowania pośredniczącego

z routingiem opartym na stronach. Korzystając z przykładu postów z poprzedniej sekcji, możemy to osiągnąć, dodając nową politykę wewnątrz katalogu app/policies, na przykład so:

<?php

przestrzeń nazw App\Policies;

użyj App\Models\Post;
użyj aplikacji \ modele \ użytkownik;

klasa PostPolicy
{
    widok funkcji publicznej(? Użytkownik $user, Post $post){
    {
        return false; Zwracanie logiki, która zezwala lub nie zezwala na dostęp
    }
}

Następnie wewnątrz widoku możemy dodać następujący kod:

 <?php

użyj funkcji Laravel\Folio\{middleware};

oprogramowanie pośredniczące(['can:view,post']);

?>
<x-layout>
    <h1>{{ $post->title }}</h1>
    <article>{!! $post->body !!} </artykuł>
</x-layout>

Jeśli użytkownik nie ma dostępu, zobaczy kod 403 Forbidden; w przeciwnym razie będzie mógł wyświetlić post 👍

Strony

wielosegmentowe Możesz także utworzyć plik, który zwróci wszystkie segmenty w adresie URL strony. Na przykład, jeśli mamy strukturę folderów, która wygląda następująco:

├── resources
│ ├── widoki
│ │ ├── strony
│ │ │ ├── multi
│   │   │   │   ├── [... ids].blade.php

Przechwyci adres URL znajdujący się pod adresem /multi/1/2/3, zwracając tablicę $id do strony.

Podsumowanie

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

O

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...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297