Porozumění ověřování polí v systému Laravel: Průvodce pro začátečníky

Ověřování je důležitou součástí každé aplikace. Zajišťuje, že data, která aplikace zpracovává, jsou přesná, spolehlivá a bezpečná. V systému Laravel je proces validace bezproblémo...

Světlý režim slouží jen pro ukázku funkcionality. Proto používejte tmavou verzi webu.

20. 12. 2024

Porozumění ověřování polí v systému Laravel: Průvodce pro začátečníky

Ověřování je důležitou součástí každé aplikace. Zajišťuje, že data, která aplikace zpracovává, jsou přesná, spolehlivá a bezpečná. V systému Laravel je proces validace bezproblémový, výkonný a snadno implementovatelný. Mezi různými funkcemi, které Laravel nabízí, je validace polí jednou z nejužitečnějších, ale někdy nepochopených funkcí. V této příručce se ponoříme do hloubky validace polí v systému Laravel a vysvětlíme ji způsobem, který je vhodný pro začátečníky.

Co je validace pole v Laravelu?

Validace polí v systému Laravel umožňuje validovat vstupy, které jsou strukturovány jako pole. To je užitečné zejména při práci s formuláři nebo rozhraními API, která přijímají více vstupů pod jedním názvem pole, jako např:

  • Seznam e-mailových adres.
  • Sbírka možností produktů.
  • Sada nahraných souborů.

Vezměme si například scénář, kdy potřebujete ověřit více telefonních čísel zadaných uživatelem jako jeden vstup. Validace polí v systému Laravel to nejen umožňuje, ale také zjednodušuje.

Základní ověření pole

Začněme jednoduchým příkladem. Předpokládejme, že máte formulářové pole s názvem items[] kde mohou uživatelé odeslat seznam položek. Chcete-li tento vstup ověřit, můžete v kontroléru zadat validační pravidlo takto:

use Illuminate\Http\Request;
 
public function store(Request $request)
{
$request->validate([
'items' => 'required|array',
]);
 
// Proceed with storing or processing the valid data.
}

Tohle je to, co to dělá:

  1. required: Zajišťuje items je v požadavku přítomno pole.
  2. array: Zajišťuje, aby hodnota items je skutečně pole.

Ověřování prvků v poli

Co když chcete ověřit každý prvek v rámci souboru items pole? Chcete například zajistit, aby každá položka byla řetězcem o maximální délce 50 znaků. Laravel vám k tomu umožňuje použít tečkovou notaci:

$request->validate([
'items' => 'required|array',
'items.*' => 'string|max:50',
]);

Vysvětlení:

  • items.*: Zaměřuje se na každý prvek items pole.
  • string: Zajistí, aby každý prvek byl řetězec.
  • max:50: Omezí délku každého řetězce na 50 znaků.

Pokud uživatel odešle neplatné pole, Laravel vrátí chybu validace s uvedením problematického prvku, např. items.2 must not exceed 50 characters.

Ověřování polí s klíči

V některých případech mohou mít pole specifické klíče, které je třeba ověřit. Například:

$request->validate([
'products' => 'required|array',
'products.*.name' => 'required|string',
'products.*.price' => 'required|numeric|min:0',
]);

Děje se toto:

  • products: Zajišťuje products pole je pole.
  • products.*.name: Zajišťuje, aby každý výrobek měl name pole, které je povinným řetězcem.
  • products.*.price: Zajišťuje, aby každý výrobek měl price pole, které je povinným číslem větším nebo rovným 0.

Příklad vstupu:

[
'products' => [
['name' => 'Laptop', 'price' => 1200],
['name' => 'Mouse', 'price' => 25]
]
]

Zpracování chyb validace

Pokud validace selže, Laravel automaticky přesměruje uživatele zpět na předchozí stránku s chybami validace. Tyto chyby můžete zobrazit v šablonách Blade pomocí příkazu $errors variabilní:

@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif

To umožňuje intuitivní způsob, jak informovat uživatele o případných problémech s jejich vstupem.

Vlastní pravidla ověřování pro pole

Někdy vestavěná validační pravidla nestačí a je třeba implementovat vlastní logiku. Laravel to usnadňuje tím, že umožňuje definovat vlastní pravidla:

  1. Vytvořte vlastní pravidlo pomocí příkazu php artisan příkaz:

    php artisan make:rule ValidPhoneNumber
  2. Implementujte logiku do vygenerovaného souboru pravidel:

    namespace App\Rules;
     
    use Closure;
    use Illuminate\Contracts\Validation\ValidationRule;
     
    class ValidPhoneNumber implements ValidationRule
    {
    public function validate(string $attribute, mixed $value, Closure $fail): void
    {
    // Example: Check if the value matches a phone number pattern
    if(!preg_match('/^\+?[0-9]{10,15}$/', $value)) {
    $fail('Invalid phone number format.');
    }
    }
     
    public function message()
    {
    return 'The :attribute must be a valid phone number.';
    }
    }
  3. Použijte vlastní pravidlo při ověřování:

    use App\Rules\ValidPhoneNumber;
     
    $request->validate([
    'contacts.*.phone' => ['required', new ValidPhoneNumber()],
    ]);

Ověřování vnořených polí

Hluboce vnořená pole můžete validovat pomocí tečkové notace. Například:

$request->validate([
'teams' => 'required|array',
'teams.*.members' => 'required|array',
'teams.*.members.*.name' => 'required|string',
'teams.*.members.*.role' => 'required|string',
]);

Příklad vstupu:

[
'teams' => [
[
'members' => [
['name' => 'Alice', 'role' => 'Developer'],
['name' => 'Bob', 'role' => 'Designer']
]
]
]
]

Tipy a osvědčené postupy

  1. Plánování pravidel ověřování: Před psaním pravidel si promyslete strukturu dat a požadavky na validaci.
  2. Použití vlastních zpráv: Přizpůsobte chybové zprávy pro lepší uživatelskou zkušenost.
    $request->validate([
    'items.*' => 'string|max:50',
    ], [
    'items.*.max' => 'Each item must not exceed 50 characters.',
    ]);
  3. Využití vlastních pravidel: Pro složité scénáře vytvářejte opakovaně použitelná vlastní pravidla, aby byl kód čistý.
  4. Otestujte své ověření: Vždy testujte různé scénáře, abyste se ujistili, že validace funguje podle očekávání.

Závěr

Ověřování polí v systému Laravel je výkonná funkce, která zjednodušuje práci se složitými datovými strukturami. Pochopením základů a prozkoumáním pokročilých případů použití můžete zajistit, aby vaše aplikace efektivně zpracovávaly validaci dat a poskytovaly lepší uživatelský komfort. Ať už pracujete s jednoduchými seznamy, nebo s hluboce vnořenými poli, validační nástroje Laravelu vám pomohou.

Původní článek publikoval Nabil Hassen.

Mohlo by vám pomoct

Praktické věci kolem webu

Než se pustíte do webu, hodí se mít jasno v podkladech, WordPressu, cookies a měření.

Google reference

Co říkají klienti

Ukázky skutečných recenzí, které klienti zanechali na mém Google profilu.

Přejít na recenze
★ ★ ★ ★ ★

„Člověk, který své práci a rozumí a ví co dělá. Velmi rychlá komunikace a profesionální přístup. Doporučuji.“

Jaroslav Kupča
Google
★ ★ ★ ★ ★

„Skvělá spolupráce, při dalších projektech určitě nebudu shánět někoho jiného.“

Roman Koňařík
Google
★ ★ ★ ★ ★

„S panem Vančurou jsem spolupracovala na tvorbě mých webových stránek a jsem maximálně spokojená. Oceňuji profesionální přístup, rychlou komunikaci a schopnost přesně pochopit moje představy. Web je moderní, přehledný, funkční a skvěle vypadá i na mobilu. Celý proces proběhl hladce, s jasným vysvětlením jednotlivých kroků a výborným výsledkem. Určitě doporučuji každému, kdo hledá spolehlivý a kvalitní přístup.“

Barbora Zemánková
Google
★ ★ ★ ★ ★

„Spolupráce při tvorbě konfigurátoru proběhla naprosto bez problémů. Oceňuji profesionální přístup, rychlou komunikaci a schopnost pochopit specifický projekt od A do Z. Konfigurátor je přehledný, funkční a přesně odpovídá mým požadavkům. Rozhodně doporučuji.“

mareksevcik_FPV
Google
★ ★ ★ ★ ★

„Velmi dobrá a rychlá spolupráce. Doporučuji!“

Leoš Kaucký
Google
★ ★ ★ ★ ★

„Přesně takto si představujeme profesionální práci. Dekujeme“

STAVILLI
Google
★ ★ ★ ★ ★

„Ať už se jedná o optimalizaci webu, nebo tvorbu na míru oceňuji kromě profesionální práce a znalostí problematiky také férový přístup a komunikaci.“

Aleš Illický
Google
★ ★ ★ ★ ★

„Děkuji za profesionální spolupráci, vše dle domluvy, naprostá spokojenost a mohu jen vřele doporučit.... Při dalších projektech určitě opět využiji Vašich služeb“

Peter Spilak
Google
★ ★ ★ ★ ★

„Profesionalita a velká ochota, nemohu jinak než doporučit“

Magdalena Vašková
Google
★ ★ ★ ★ ★

„Skvělá zkušenost při tvorbě webu, profesionální přístup, rychlost, ochota pomoci“

Jana Kono
Google
★ ★ ★ ★ ★

„Rychlá spolupráce a komunikace – mohu jen doporučit.“

Gawix
Google
★ ★ ★ ★ ★

„Moc mi pomohl, když jsem potřebovala pomoc s webem. A bylo to gratis :)). Jsem mu neskonale vděčná.“

Radka Arbesová
Google
★ ★ ★ ★ ★

„Děkuji Jiřímu za rychlou a kvalitní spolupráci na tvorbě webu. Srozumitelná a ochotná komunikace mě vždycky potěší a přináší důvěru.“

Jiří Mařík
Google
★ ★ ★ ★ ★

„Jsem maximálně spokojená. Rychlost, ochota a cenově dostupné. Děkuji“

Veronika Černá
Google
★ ★ ★ ★ ★

„Naprostá spokojenost. Rychlá komunikace, skvělá cena a odborná pomoc. Moc děkuji :)“

Patricie Kučerová
Google
★ ★ ★ ★ ★

„Velká spokojenost, rychlost a p. Vančura moc dobře ví co dělá. :)“

Ondřej Daniško
Google
★ ★ ★ ★ ★

„dobrá práce, rychlá odezva“

Zuzana Jírová
Google
★ ★ ★ ★ ★

„S programátory mám zkušeností hodně, ale tady musím opravdu pochválit. Pro mě a mé přátele vytvořil skvělý nástroj na evidenci sbírek a opravdu se to povedlo. Bylo to hotové rychle, kvalitně a za skvělou cenu. Komunikace funguje velmi rychle, což je super a ne úplně standard. Díky za super práci, za mě 100% spokojenost!“

Zdeněk
Google
★ ★ ★ ★ ★

„Vše bylo rychlé a hlavně to funguje. Dobrá práce.“

Lukáš Bartášek
Google
★ ★ ★ ★ ★

„Normálně recenze nepíši, ale zde rád doporučím kvalitní práci. Jiří pro mě vytvořil web pro dětské tábory. Kvalitní práce, rychlá komunikace a vlastní nápady, které Jiří sám přidá, jsou na velice vysoké úrovni. Nemohu hodnotit jinak než 5/5.“

Tomáš Loněk
Google
★ ★ ★ ★ ★

„Pan Jiri nam delal jiz 3 webove stranky a vzdy velka spokojenost, je mega rychly a vse hned kladne vyridi, mohu pouze doporucit. Poradi si bez problemu i s rezervacnimi kalendaremi, udrzbou socialnich siti, atd.“

Barbara Mašková
Google