Nie ma tu nic, czego nie przerobiliśmy pisząc własny framework. Teraz pokazujemy, jak działa to w Laravelu. Do dzieła.
Ok, podrasujmy nasz formularz:
@extends('layouts.app')
@section('content')
<h1>Hello World!</h1>
<form action="{{route('main')}}" method="POST">
<label for="author">Author</label> </br>
<input type="text" name="author" id="author"> </br>
<label for="description">Content:</label> </br>
<textarea name="description" id="description"></textarea></br>
<input type="submit" value="send">
@csrf
</form>
@endsection
Ok, wykorzystajmy request do walidacji inputu:
Route::post("/", function(Request $request){
$request->validate([
'author' => 'required',
'description' => 'required'
]);
session()->flash("status", "entry created!");
return redirect()->route("main");
});
To bardzo prosty sposób, później będziemy korzystać z tzw. form requestów, ale na razie musi wystarczyć. Spróbujmy wysłać bez wymaganych pól nasz formularz – zobaczmy, że nic się nie dzieje.
Ok, ale trzeba jeszcze dodać wyświetlanie errorów:
@extends('layouts.app')
@section('content')
<h1>Hello World!</h1>
<form action="{{route('main')}}" method="POST">
<label for="author">Author</label> </br>
<input type="text" name="author" id="author"> </br>
@error('author')
<p>{{$message}}</p>
@enderror
<label for="description">Content:</label> </br>
<textarea name="description" id="description"></textarea></br>
@error('description')
<p>{{$message}}</p>
@enderror
<input type="submit" value="send">
@csrf
</form>
@endsection
Teraz błędy nam się wyświetlają. Natomiast stary input nie zostaje. Od tego jest old helper:
@extends('layouts.app')
@section('content')
<h1>Hello World!</h1>
<form action="{{route('main')}}" method="POST">
<label for="author">Author</label> </br>
<input type="text" name="author" id="author" value="{{old('author')}}"> </br>
@error('author')
<p>{{$message}}</p>
@enderror
<label for="description">Content:</label> </br>
<textarea name="description" id="description">{{old('description')}}</textarea></br>
@error('description')
<p>{{$message}}</p>
@enderror
<input type="submit" value="send">
@csrf
</form>
@endsection
Też robiąc własny framework MVC robiliśmy te old helpery i error-listy (natomiast ile z tego trafiło do finalnego projektu sam nie wiem, więc na GitHub nie odsyłam tylko do tamtych lekcji).
Teraz widzimy, jak działa to od drugiej strony, czyli użytkownika frameworka.