Nakon ovog poglavlja
Što ćete znati napraviti
- Napraviti Blade formu sa CSRF tokenom i prikazom pogrešaka.
- Izdvojiti validaciju i autorizaciju u Form Request.
- Sigurno spremiti samo validated podatke.
Siguran zadani tok
CSRF, metoda i stare vrijednosti
@csrf dodaje skriveni token koji web middleware provjerava. @method simulira PATCH ili DELETE. old vraća prethodni unos nakon automatskog preusmjeravanja zbog pogrešne validacije, a @error prikazuje poruku uz polje.
<form method="post" action="{{ route('articles.store') }}">
@csrf
<label for="title">Naslov</label>
<input id="title" name="title" value="{{ old('title') }}">
@error('title')
<p role="alert">{{ $message }}</p>
@enderror
<button>Spremi skicu</button>
</form>
Ugovor zahtjeva
Autorizacija i pravila prije kontrolera
Form Request ima authorize i rules. Ne vraćamo true automatski ako je radnja zaštićena; provjeravamo policy ili drugu ovlast. Nakon prolaska kontroler koristi validated ili safe podatke, ne cijeli request.
<?php
final class StoreArticleRequest extends FormRequest
{
public function authorize(): bool
{
return $this->user()?->can('create', Article::class) ?? false;
}
public function rules(): array
{
return [
'title' => ['required', 'string', 'max:200'],
'body' => ['required', 'string', 'max:100000'],
];
}
}
Tanak HTTP sloj
Validated podaci u servis ili model
Kontroler koordinira: primi već autoriziran zahtjev, pozove aplikacijsku operaciju i vrati redirekciju. Slug, author_id i početni status određuje server. Poslovno složen postupak izdvajamo u action/service klasu i transakciju.
<?php
public function store(StoreArticleRequest $request): RedirectResponse
{
$article = $request->user()->articles()->create([
...$request->validated(),
'slug' => Str::slug($request->string('title')) . '-' . Str::random(6),
'status' => ArticleStatus::Draft,
]);
return to_route('articles.show', $article)
->with('status', 'Skica je spremljena.');
}
Primijenite naučeno
Vježba: Create i edit članak
Dodajte Laravel forme za stvaranje i uređivanje članka.
- Napravite zasebne Form Requeste ili ponovno upotrebljiva pravila.
- Dodajte policy provjeru za uređivanje.
- Spremite isključivo validirana i poslužiteljski određena polja.
Za provjeru i nastavak