Laravel Dokumentacja PL

Spolszczona dokumentacja Laravel

Frontend

 

Wprowadzenie

Laravel to framework backendowy, który zapewnia wszystkie funkcje potrzebne do tworzenia nowoczesnych aplikacji internetowych, takie jak routingwalidacjabuforowaniekolejkiprzechowywanie plików i wiele innych. Uważamy jednak, że ważne jest, aby oferować programistom piękne, kompleksowe doświadczenie, w tym potężne podejścia do budowania frontendu aplikacji.

Istnieją dwa podstawowe sposoby radzenia sobie z tworzeniem frontendu podczas budowania aplikacji za pomocą Laravel, a to, które podejście wybierzesz, zależy od tego, czy chcesz zbudować swój frontend za pomocą PHP, czy za pomocą frameworków JavaScript, takich jak Vue i React. Poniżej omówimy obie te opcje, abyś mógł podjąć świadomą decyzję dotyczącą najlepszego podejścia do rozwoju frontendu dla swojej aplikacji.

 

Korzystanie z PHP

 

PHP & Blade

W przeszłości większość aplikacji PHP renderowała HTML do przeglądarki przy użyciu prostych szablonów HTML przeplatanych instrukcjami PHP echo, które renderowały dane pobrane z bazy danych podczas żądania:

<div>
<?php foreach ($users as $user): ?>
Witaj, <?php echo $user->name; ?> <br />
<? php endforeach; ?
</div>

W Laravel takie podejście do renderowania HTML można nadal osiągnąć za pomocą widoków i Blade. Blade to niezwykle lekki język szablonów, który zapewnia wygodną, krótką składnię do wyświetlania danych, iteracji po danych i nie tylko:

<div>
@foreach ($users as $user)
Witaj, {{ $user->name }} <br />
@endforeach
</div>

Podczas tworzenia aplikacji w ten sposób, przesyłanie formularzy i inne interakcje na stronie zazwyczaj otrzymują całkowicie nowy dokument HTML z serwera, a cała strona jest ponownie renderowana przez przeglądarkę. Nawet dzisiaj, wiele aplikacji może doskonale nadawać się do tworzenia frontendów w ten sposób przy użyciu prostych szablonów Blade.

 

Rosnące oczekiwania

Jednak wraz z dojrzewaniem oczekiwań użytkowników dotyczących aplikacji internetowych, wielu programistów odkryło potrzebę budowania bardziej dynamicznych frontendów z interakcjami, które wydają się bardziej dopracowane. W związku z tym niektórzy deweloperzy decydują się na rozpoczęcie tworzenia frontendu aplikacji przy użyciu frameworków JavaScript, takich jak Vue i React.

Inni, woląc pozostać przy języku backendowym, z którym czują się komfortowo, opracowali rozwiązania, które pozwalają na tworzenie nowoczesnych interfejsów użytkownika aplikacji internetowych, przy jednoczesnym wykorzystaniu wybranego języka backendowego. Przykładowo, w ekosystemie Rails, przyczyniło się to do powstania bibliotek takich jak Turbo Hotwire i Stimulus.

W ekosystemie Laravel potrzeba tworzenia nowoczesnych, dynamicznych frontendów przy użyciu głównie PHP doprowadziła do powstania Laravel Livewire i Alpine.js.

 

Livewire

Laravel Livewire to framework do tworzenia frontendów opartych na Laravel, które są dynamiczne, nowoczesne i żywe, podobnie jak frontendy zbudowane z nowoczesnych frameworków JavaScript, takich jak Vue i React.

Podczas korzystania z Livewire tworzysz „komponenty” Livewire, które renderują dyskretną część interfejsu użytkownika i udostępniają metody i dane, które można wywoływać i wchodzić w interakcje z frontendem aplikacji. Na przykład prosty komponent „Counter” może wyglądać następująco:

<?
namespace App\Http\Livewire;
useLivewire\Component;
Klasa Licznik rozszerza Składnik
{
public $count = 0;
public function increment()
{
$this->count++;
}
public function render()
{
return view(livewire.counter);
}
}

Odpowiedni szablon dla licznika byłby napisany w następujący sposób:

<div>
<button wire:click=increment>+</button>.
<h1>{{ $count }}</h1>
</div>

Jak widać, Livewire umożliwia pisanie nowych atrybutów HTML, takich jak wire:click, które łączą frontend i backend aplikacji Laravel. Ponadto można renderować bieżący stan komponentu za pomocą prostych wyrażeń Blade.

Dla wielu osób Livewire zrewolucjonizował rozwój front-endu z Laravelem, pozwalając im pozostać w wygodnym środowisku Laravel podczas tworzenia nowoczesnych, dynamicznych aplikacji internetowych. Zazwyczaj programiści korzystający z Livewire wykorzystują również Alpine.js do „posypywania” JavaScriptem frontendu tylko tam, gdzie jest to potrzebne, na przykład w celu renderowania okna dialogowego.

Jeśli jesteś nowym użytkownikiem Laravel, zalecamy zapoznanie się z podstawowymi zastosowaniami widoków i Blade. Następnie zapoznaj się z oficjalną dokumentacją Laravel Livewire, aby dowiedzieć się, jak przenieść swoją aplikację na wyższy poziom dzięki interaktywnym komponentom Livewire.

 

Zestawy startowe

Jeśli chcesz zbudować swój frontend przy użyciu PHP i Livewire, możesz skorzystać z naszych zestawów startowych Breeze lub Jetstream, aby szybko rozpocząć tworzenie aplikacji. Oba te zestawy startowe stanowią rusztowanie dla przepływu uwierzytelniania backendu i frontendu aplikacji przy użyciu Blade i Tailwind, dzięki czemu można po prostu rozpocząć tworzenie kolejnego dużego pomysłu.

 

Korzystanie z Vue / React

Chociaż możliwe jest tworzenie nowoczesnych frontendów przy użyciu Laravel i Livewire, wielu programistów nadal woli wykorzystywać moc frameworków JavaScript, takich jak Vue lub React. Pozwala to deweloperom korzystać z bogatego ekosystemu pakietów JavaScript i narzędzi dostępnych za pośrednictwem NPM.

Jednak bez dodatkowych narzędzi, parowanie Laravel z Vue lub React pozostawiłoby nas z koniecznością rozwiązania wielu skomplikowanych problemów, takich jak routing po stronie klienta, uwodnienie danych i uwierzytelnianie. Routing po stronie klienta jest często upraszczany przy użyciu opiniotwórczych frameworków Vue / React, takich jak Nuxt i Next; jednak nawodnienie danych i uwierzytelnianie pozostają skomplikowanymi i uciążliwymi problemami do rozwiązania podczas parowania frameworka backendowego, takiego jak Laravel, z tymi frameworkami frontendowymi.

Co więcej, deweloperzy są zmuszeni do utrzymywania dwóch oddzielnych repozytoriów kodu i często muszą koordynować konserwację, wydania i wdrożenia w obu repozytoriach. Choć problemy te nie są nie do pokonania, nie uważamy, by był to produktywny lub przyjemny sposób tworzenia aplikacji.

 

Bezwładność

Na szczęście Laravel oferuje to, co najlepsze z obu światów. Inertia wypełnia lukę między aplikacją Laravel a nowoczesnym frontendem Vue lub React, umożliwiając tworzenie pełnoprawnych, nowoczesnych frontendów przy użyciu Vue lub React, jednocześnie wykorzystując trasy i kontrolery Laravel do routingu, nawadniania danych i uwierzytelniania – wszystko w ramach jednego repozytorium kodu. Dzięki takiemu podejściu można cieszyć się pełną mocą zarówno Laravel, jak i Vue / React bez ograniczania możliwości któregokolwiek z tych narzędzi.

Po zainstalowaniu Inertii w aplikacji Laravel, będziesz pisał trasy i kontrolery jak zwykle. Jednak zamiast zwracać szablon Blade z kontrolera, zwrócisz stronę Inertia:

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\User;
use Inertia\Inertia;
use Inertia\Response;
class UserController extends Controller
{
/**
* Show the profile for a given user.
*/
public function show(string $id): Response
{
return Inertia::render(’Users/Profile’, [
’user’ => User::findOrFail($id)
]);
}
}

Strona Inertia odpowiada komponentowi Vue lub React, zazwyczaj przechowywanemu w katalogu resources/js/Pages aplikacji. Dane przekazane do strony za pośrednictwem metody Inertia::render zostaną wykorzystane do uwodnienia „rekwizytów” komponentu strony:

<script setup>
import Layout z ’@/Layouts/Authenticated.vue;
import { Head } z ’@inertiajs/vue3;
const props = defineProps([user]);
</script>
<template>
<Head title=Profil użytkownika />
<Layout>
<template#header>
<h2 class=font-semibold text-xl text-gray-800 leading-tight„>.
Profil
</h2>
</template>
<div class=py-12„>.
Witaj, {{ user.name }}
</div>
</Layout>
</template>

Jak widać, Inertia pozwala wykorzystać pełną moc Vue lub React podczas tworzenia frontendu, zapewniając jednocześnie lekki pomost między backendem opartym na Laravel a frontendem opartym na JavaScript.

Renderowanie po stronie serwera

Jeśli obawiasz się zagłębić w Inertia, ponieważ Twoja aplikacja wymaga renderowania po stronie serwera, nie martw się. Inertia oferuje obsługę renderowania po stronie serwera. A podczas wdrażania aplikacji za pośrednictwem Laravel Forge można łatwo upewnić się, że proces renderowania po stronie serwera Inertii jest zawsze uruchomiony.

 

Zestawy startowe

Jeśli chcesz zbudować swój frontend przy użyciu Inertia i Vue / React, możesz skorzystać z naszych zestawów startowych Breeze lub Jetstream, aby szybko rozpocząć tworzenie aplikacji. Oba te zestawy startowe stanowią rusztowanie dla przepływu uwierzytelniania backendu i frontendu aplikacji przy użyciu Inertia, Vue / React, Tailwind i Vite, dzięki czemu można rozpocząć tworzenie kolejnego dużego pomysłu.

 

Łączenie aktywów

Niezależnie od tego, czy zdecydujesz się opracować swój frontend przy użyciu Blade i Livewire, czy Vue / React i Inertia, prawdopodobnie będziesz musiał połączyć CSS swojej aplikacji w zasoby gotowe do produkcji. Oczywiście, jeśli zdecydujesz się zbudować frontend aplikacji za pomocą Vue lub React, będziesz musiał również połączyć swoje komponenty w zasoby JavaScript gotowe do użycia w przeglądarce.

Domyślnie Laravel wykorzystuje Vite do łączenia zasobów. Vite zapewnia błyskawiczne czasy kompilacji i niemal natychmiastową wymianę modułów Hot Module Replacement (HMR) podczas lokalnego rozwoju. We wszystkich nowych aplikacjach Laravel, w tym tych korzystających z naszych zestawów startowych, znajdziesz plik vite.config.js, który ładuje naszą lekką wtyczkę Laravel Vite, która sprawia, że Vite jest przyjemny w użyciu z aplikacjami Laravel.

Najszybszym sposobem na rozpoczęcie pracy z Laravel i Vite jest rozpoczęcie tworzenia aplikacji przy użyciu Laravel Breeze, naszego najprostszego zestawu startowego, który uruchamia aplikację, zapewniając rusztowanie uwierzytelniania frontend i backend.

Aby uzyskać bardziej szczegółową dokumentację dotyczącą korzystania z Vite z Laravel, zapoznaj się z naszą dedykowaną dokumentacją dotyczącą łączenia i kompilowania zasobów.

Udostępnij na:

 

Wprowadzenie

Domyślna struktura aplikacji Laravel ma na celu zapewnienie doskonałego punktu wyjścia zarówno dla dużych, jak i małych aplikacji. Możesz jednak zorganizować swoją aplikację w dowolny sposób. Laravel nie nakłada prawie żadnych ograniczeń na to, gdzie znajduje się dana klasa – o ile Composer może ją automatycznie załadować.

Jesteś nowy w Laravel? Sprawdź Laravel Bootcamp, aby uzyskać praktyczną wycieczkę po frameworku, podczas gdy my przeprowadzimy Cię przez proces tworzenia pierwszej aplikacji Laravel.

 

Katalog główny

 

Katalog aplikacji

Katalog app zawiera podstawowy kod aplikacji. Omówimy ten katalog bardziej szczegółowo wkrótce; jednak prawie wszystkie klasy w aplikacji będą znajdować się w tym katalogu.

 

Katalog Bootstrap

Katalog bootstrap zawiera plik app.php, który uruchamia framework. W tym katalogu znajduje się również katalog pamięci podręcznej, który zawiera pliki wygenerowane przez framework w celu optymalizacji wydajności, takie jak pliki pamięci podręcznej tras i usług. Zazwyczaj nie ma potrzeby modyfikowania żadnych plików w tym katalogu.

 

Katalog konfiguracji

Katalog config, jak sama nazwa wskazuje, zawiera wszystkie pliki konfiguracyjne aplikacji. Dobrym pomysłem jest przeczytanie wszystkich tych plików i zapoznanie się ze wszystkimi dostępnymi opcjami.

 

Katalog baz danych

Katalog bazy danych zawiera migracje bazy danych, fabryki modeli i nasiona. Jeśli chcesz, możesz również użyć tego katalogu do przechowywania bazy danych SQLite.

 

Katalog publiczny

Katalog publiczny zawiera plik index.php, który jest punktem wejścia dla wszystkich żądań wchodzących do aplikacji i konfiguruje automatyczne ładowanie. W tym katalogu znajdują się również zasoby, takie jak obrazy, JavaScript i CSS.

 

Katalog zasobów

Katalog zasobów zawiera widoki, a także surowe, nieskompilowane zasoby, takie jak CSS lub JavaScript.

 

Katalog tras

Katalog tras zawiera wszystkie definicje tras dla aplikacji. Domyślnie Laravel zawiera kilka plików tras: web.phpapi.phpconsole.php i channels.php.

Plik web.php zawiera trasy, które RouteServiceProvider umieszcza w grupie web middleware, która zapewnia stan sesji, ochronę CSRF i szyfrowanie plików cookie. Jeśli aplikacja nie oferuje bezstanowego interfejsu API RESTful, wszystkie trasy zostaną najprawdopodobniej zdefiniowane w pliku web.php.

Plik api. php zawiera trasy, które RouteServiceProvider umieszcza w grupie oprogramowania pośredniczącego api. Trasy te mają być bezstanowe, więc żądania wchodzące do aplikacji za pośrednictwem tych tras mają być uwierzytelniane za pomocą tokenów i nie będą miały dostępu do stanu sesji.

Plik console. php jest miejscem, w którym można zdefiniować wszystkie polecenia konsoli oparte na zamknięciach. Każde zamknięcie jest powiązane z instancją polecenia, co pozwala na proste podejście do interakcji z metodami IO każdego polecenia. Mimo że plik ten nie definiuje tras HTTP, definiuje punkty wejścia (trasy) do aplikacji oparte na konsoli.

Plik channels. php to miejsce, w którym można zarejestrować wszystkie kanały transmisji zdarzeń obsługiwane przez aplikację.

 

Katalog pamięci masowej

Katalog storage zawiera logi, skompilowane szablony Blade, sesje oparte na plikach, cache plików i inne pliki generowane przez framework. Katalog ten jest podzielony na katalogi appframework i logs. Katalog app może być używany do przechowywania dowolnych plików generowanych przez aplikację. Katalog framework służy do przechowywania plików i pamięci podręcznych generowanych przez framework. Katalog logs zawiera pliki dziennika aplikacji.

Katalog storage/app/public może być używany do przechowywania plików generowanych przez użytkowników, takich jak awatary profilowe, które powinny być publicznie dostępne. Powinieneś utworzyć dowiązanie symboliczne w public/storage, które wskazuje na ten katalog. Dowiązanie można utworzyć za pomocą polecenia php artisan storage:link Artisan.

 

Katalog testów

Katalog tests zawiera zautomatyzowane testy. Przykładowe testy jednostkowe PHPUnit i testy funkcji są dostarczane po wyjęciu z pudełka. Każda klasa testowa powinna być poprzedzona słowem Test. Testy można uruchamiać za pomocą poleceń phpunit lub php vendor/bin/phpunit. Lub, jeśli chcesz uzyskać bardziej szczegółową i piękną reprezentację wyników testów, możesz uruchomić testy za pomocą polecenia php artisan test Artisan.

 

Katalog sprzedawców

Katalog dostawców zawiera zależności Composera.

 

Katalog aplikacji

Większość aplikacji znajduje się w katalogu app. Domyślnie, katalog ten ma przestrzeń nazw App i jest automatycznie ładowany przez Composer przy użyciu standardu automatycznego ładowania PSR-4.

Katalog aplikacji zawiera wiele dodatkowych katalogów, takich jak ConsoleHttp i Providers. Katalogi Console i Http stanowią interfejs API do rdzenia aplikacji. Protokół HTTP i CLI są mechanizmami interakcji z aplikacją, ale w rzeczywistości nie zawierają logiki aplikacji. Innymi słowy, są to dwa sposoby wydawania poleceń aplikacji. Katalog Console zawiera wszystkie polecenia Artisan, podczas gdy katalog Http zawiera kontrolery, oprogramowanie pośredniczące i żądania.

Wiele innych katalogów zostanie wygenerowanych wewnątrz katalogu app, gdy użyjesz poleceń make Artisan do wygenerowania klas. Na przykład katalog app/Jobs nie będzie istniał, dopóki nie zostanie wykonane polecenie make:job Artisan w celu wygenerowania klasy zadania.

Wiele klas w katalogu aplikacji może być generowanych przez Artisan za pomocą poleceń. Aby przejrzeć dostępne polecenia, uruchom polecenie php artisan list make w terminalu.

Katalog nadawców

Katalog Broadcasting zawiera wszystkie klasy kanałów nadawczych dla aplikacji. Klasy te są generowane za pomocą polecenia make:channel. Katalog ten nie istnieje domyślnie, ale zostanie utworzony podczas tworzenia pierwszego kanału. Aby dowiedzieć się więcej o kanałach, zapoznaj się z dokumentacją dotyczącą transmisji zdarzeń.

 

Katalog konsoli

Katalog Console zawiera wszystkie niestandardowe polecenia Artisan dla aplikacji. Polecenia te można wygenerować za pomocą polecenia make:command. W tym katalogu znajduje się również jądro konsoli, w którym rejestrowane są niestandardowe polecenia Artisan i definiowane są zaplanowane zadania.

 

Katalog wydarzeń

Katalog ten nie istnieje domyślnie, ale zostanie utworzony przez polecenia event:generate i make:event Artisan. Katalog Events zawiera klasy zdarzeń. Zdarzenia mogą być używane do ostrzegania innych części aplikacji o wystąpieniu danej akcji, zapewniając dużą elastyczność i rozłączność.

 

Katalog wyjątków

Katalog Exceptions zawiera program obsługi wyjątków aplikacji i jest również dobrym miejscem do umieszczania wszelkich wyjątków rzucanych przez aplikację. Jeśli chcesz dostosować sposób rejestrowania lub renderowania wyjątków, powinieneś zmodyfikować klasę Handler w tym katalogu.

 

Katalog http

Katalog Http zawiera kontrolery, oprogramowanie pośredniczące i żądania formularzy. Prawie cała logika do obsługi żądań wchodzących do aplikacji zostanie umieszczona w tym katalogu.

 

Katalog ofert pracy

Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu polecenia make:job Artisan. Katalog Jobs zawiera zadania kolejkowane dla aplikacji. Zadania mogą być kolejkowane przez aplikację lub uruchamiane synchronicznie w ramach bieżącego cyklu życia żądania. Zadania uruchamiane synchronicznie podczas bieżącego żądania są czasami określane jako „polecenia”, ponieważ są implementacją wzorca poleceń.

 

Katalog słuchaczy

Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu poleceń event:generate lub make:listener Artisan. Katalog Listeners zawiera klasy obsługujące zdarzenia. Odsłuchiwacze zdarzeń otrzymują instancję zdarzenia i wykonują logikę w odpowiedzi na wystrzelenie zdarzenia. Na przykład zdarzenie UserRegistered może być obsługiwane przez listener SendWelcomeEmail.

 

Katalog poczty

Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu polecenia make:mail Artisan. Katalog Mail zawiera wszystkie klasy reprezentujące wiadomości e-mail wysyłane przez aplikację. Obiekty Mail umożliwiają hermetyzację całej logiki tworzenia wiadomości e-mail w pojedynczej, prostej klasie, którą można wysłać za pomocą metody Mail::send.

 

Katalog modeli

Katalog Models zawiera wszystkie klasy modeli Eloquent. Eloquent ORM dołączony do Laravel zapewnia piękną, prostą implementację ActiveRecord do pracy z bazą danych. Każda tabela bazy danych ma odpowiedni „Model”, który jest używany do interakcji z tą tabelą. Modele umożliwiają wyszukiwanie danych w tabelach, a także wstawianie nowych rekordów do tabeli.

 

Katalog powiadomień

Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu polecenia make:notification Artisan. Katalog Notifications zawiera wszystkie „transakcyjne” powiadomienia wysyłane przez aplikację, takie jak proste powiadomienia o zdarzeniach, które mają miejsce w aplikacji. Funkcja powiadomień Laravel abstrahuje wysyłanie powiadomień przez różne sterowniki, takie jak e-mail, Slack, SMS lub przechowywane w bazie danych.

 

Katalog polityk

Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu polecenia make:policy Artisan. Katalog Policies zawiera klasy zasad autoryzacji dla aplikacji. Zasady są używane do określenia, czy użytkownik może wykonać daną akcję na zasobie.

 

Katalog dostawców

Katalog Providers zawiera wszystkich dostawców usług dla aplikacji. Dostawcy usług uruchamiają aplikację, wiążąc usługi w kontenerze usług, rejestrując zdarzenia lub wykonując inne zadania w celu przygotowania aplikacji na przychodzące żądania.

W świeżej aplikacji Laravel katalog ten będzie już zawierał kilku dostawców. W razie potrzeby możesz dodać własnych dostawców do tego katalogu.

 

Katalog zasad

Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu polecenia make:rule Artisan. Katalog Rules zawiera niestandardowe obiekty reguł walidacji dla aplikacji. Reguły są używane do hermetyzacji skomplikowanej logiki walidacji w prostym obiekcie. Więcej informacji można znaleźć w dokumentacji walidacji.

Udostępnij na: