Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator Laravel FormRequest

Walidacja wydzielona z kontrolera

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
Uzupełnij dane, aby wygenerować klasę FormRequest.

Oceń to narzędzie:

5,0 / 5 · 1 ocena

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Generator klasy FormRequest

FormRequest przenosi walidację z kontrolera do osobnej klasy. Kontroler staje się krótszy, a reguły można łatwo ponownie wykorzystać i testować.

Jak działa?

MetodaRola
authorize()czy użytkownik może wykonać akcję
rules()reguły walidacji pól
messages()własne komunikaty (opcjonalnie)

Format reguł

Każda linia to pole: reguły, np. email: required|email|unique:users,email. Dostępne reguły to m.in. required, string, numeric, email, max, min, unique, exists, nullable.

Przykład użycia

public function store(StoreProductRequest $request)
{
    return Product::create($request->validated());
}

Jak generator zamienia wpisane linie na klasę FormRequest

Narzędzie działa jak prosty parser tekstu wejściowego. Każda linia opisuje jedno pole formularza i znajdujące się po dwukropku reguły. Generator rozdziela nazwę pola od reguł, a następnie reguły rozbija po znaku pionowej kreski. Z otrzymanych elementów buduje tablicę zwracaną przez metodę rules(). Nie odwołuje się przy tym do bazy danych ani do modeli — nie sprawdza, czy tabela users istnieje, ani czy kolumna email ma odpowiedni typ.

Klasa wynikowa dziedziczy po FormRequest. Metoda authorize() zwraca wartość wybraną w interfejsie: true albo false. Metoda rules() zawiera mapowanie pole => ciąg reguł. Jeżeli użytkownik poda własne komunikaty, generator tworzy także metodę messages() z tablicą kluczy w formacie pole.reguła. To wszystko jest zwykłym kodem PHP, który można wkleić do projektu Laravel.

Wzór przetwarzania jest liniowy: pole = tekst przed pierwszym dwukropkiem, reguły = tekst po dwukropku. Znaki | rozdzielają poszczególne reguły, a ewentualne parametry po dwukropku w regule, np. max:255, pozostają częścią reguły. Dlatego wpis name: required|string|max:255 trafia do rules() jako 'name' => 'required|string|max:255'.

Przykład krok po kroku dla formularza produktu

  1. Wpisujesz trzy pola: name, price oraz email. Dla każdego podajesz reguły w osobnej linii.
  2. Name: required|string|max:255. To daje 3 reguły cząstkowe: required, string, max z parametrem 255.
  3. Price: required|numeric|min:0. To daje kolejne 3 reguły cząstkowe: required, numeric, min z parametrem 0.
  4. Email: required|email|unique:users,email. To daje 3 reguły cząstkowe: required, email, unique z parametrami users oraz email.
  5. Włączasz authorize() na true i nie dodajesz własnych komunikatów. Generator tworzy klasę StoreProductRequest z metodą rules(), która zwraca tablicę 3 pól.
  6. Łącznie w rules() znajduje się 9 tokenów reguł: 3 + 3 + 3. Kontroler może przyjąć StoreProductRequest i wywołać $request->validated(), otrzymując maksymalnie 3 zwalidowane pola.

Reguły z rules() — szybka ściągawka

RegułaPrzykładowy zapisZnaczenie
requiredrequiredPole musi być obecne i niepuste.
stringstringWartość ma być tekstem.
numericnumericWartość ma być liczbą.
emailemailWartość ma przypominać poprawny adres e-mail.
maxmax:255Ustala górny limit długości lub wartości.
minmin:0Ustala dolny limit długości lub wartości.
uniqueunique:users,emailSprawdza unikalność w tabeli i kolumnie.
existsexists:users,idSprawdza, czy rekord istnieje w tabeli.

Praktyczne wskazówki przy generowaniu FormRequest

  • Trzymaj jedną linię na jedno pole — generator nie zgaduje zależności między polami. Jeśli reguła musi być warunkowa, dopisz ją świadomie albo uzupełnij klasę ręcznie po wygenerowaniu.
  • Nazywaj klasy od akcji — StoreProductRequest, UpdateProductRequest, StoreUserRequest. Dzięki temu od razu widać, gdzie dana walidacja ma zastosowanie.
  • Ustawiaj authorize() świadomie — domyślnie bezpieczniej jest zostawić false i dopisać politykę lub warunek. Włączenie true ma sens tylko wtedy, gdy dostęp jest już ograniczony w innym miejscu.
  • Własne komunikaty dodawaj punktowo — nadpisuj messages() tylko dla pól, które naprawdę wymagają innego brzmienia. Reszta może korzystać z domyślnych tłumaczeń Laravel.
  • Testuj FormRequest osobno — sprawdź poprawne dane, brak pola, zły format i przekroczenie limitu. To szybsze niż testowanie całego kontrolera za każdym razem.

Ograniczenia generatora i rzeczy, które trzeba sprawdzić ręcznie

  • Nie zna schematu bazy danych — reguła unique:users,email zostanie zapisana poprawnie jako tekst, ale generator nie sprawdzi, czy tabela users i kolumna email naprawdę istnieją.
  • Nie obsługuje logiki warunkowej — jeśli reguła zależy od roli użytkownika, identyfikatora lub innego pola, trzeba dopisać ją ręcznie w rules() albo użyć odpowiedniej klasy reguły.
  • Nie weryfikuje składni PHP — generator składa kod na podstawie wpisanych linii. Literówka w nazwie reguły nie zostanie wykryta, dopóki Laravel nie uruchomi walidacji.
  • Nie generuje polityk, tłumaczeń ani testów — FormRequest to tylko warstwa walidacji i autoryzacji. Reszta zabezpieczeń, komunikatów i przypadków testowych pozostaje po stronie projektu.

Najczęstsze pytania

Dlaczego authorize() domyślnie false?

To bezpieczne ustawienie domyślne — musisz świadomie zezwolić na akcję. W generatorze możesz włączyć zwracanie true.

Co daje validated()?

Zwraca tylko dane, które przeszły walidację — chroni przed mass assignment niechcianych pól.

Jak dodać własne komunikaty?

Nadpisz metodę messages() i zwróć tablicę z kluczami w formacie pole.reguła.

Czym jest FormRequest w Laravel?

To klasa bazowa Laravel, która przenosi autoryzację i walidację z kontrolera do osobnego pliku. Kontroler otrzymuje gotowe, zwalidowane dane.

Jak wygenerować FormRequest bez wpisywania kodu ręcznie?

Możesz użyć generatora online: wpisujesz pola i reguły, a narzędzie zwraca gotową klasę PHP. Alternatywą jest ręczne utworzenie klasy lub użycie komendy artisan make:request.

Czy FormRequest może walidować tablice i pola zagnieżdżone?

Tak, jeśli zapiszesz odpowiednie nazwy pól, np. items.*.name, oraz reguły dla tablic. Generator przepisze je dosłownie, ale nie sprawdzi, czy struktura danych odpowiada temu zapisowi.

Jak przekazać dane z FormRequest do kontrolera?

W metodzie kontrolera wstrzykujesz typ klasy, np. StoreProductRequest $request, a następnie używasz $request->validated() albo $request->safe(). Otrzymujesz tylko dane dopuszczone przez reguły.

Czy w FormRequest można używać reguły unique i exists?

Tak. W rules() wpisujesz je tak samo jak w walidatorze, np. unique:users,email. Pamiętaj, że przy aktualizacji rekordu często trzeba pominąć bieżący identyfikator.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!