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