Zoeken…
Invoering
Aangepaste aanvragen (of formulierverzoeken) zijn nuttig in situaties waarin iemand een aanvraag wil autoriseren en valideren voordat de controller-methode wordt gebruikt.
Men zou kunnen denken aan twee praktische toepassingen, een record maken en bijwerken terwijl elke actie een andere set validatie (of autorisatie) regels heeft.
Het gebruik van formulierverzoeken is triviaal, men moet de verzoekklasse in de methode typen.
Syntaxis
- php artisan make: request name_of_request
Opmerkingen
Verzoeken zijn handig bij het scheiden van uw validatie van Controller. Hiermee kunt u ook controleren of het verzoek is geautoriseerd.
Verzoeken aanmaken
php artisan make:request StoreUserRequest
php artisan make:request UpdateUserRequest
Opmerking : u kunt ook overwegen namen als StoreUser of UpdateUser te gebruiken (zonder appendix- aanvraag ), omdat uw FormRequests in de map
app/Http/Requests/
worden geplaatst.
Formulierverzoek gebruiken
Laten we zeggen doorgaan met het gebruikersvoorbeeld (mogelijk hebt u een controller met de winkelmethode en de updatemethode). Om FormRequests te gebruiken, gebruikt u een hint voor het specifieke verzoek.
...
public function store(App\Http\Requests\StoreRequest $request, App\User $user) {
//by type-hinting the request class, Laravel "runs" StoreRequest
//before actual method store is hit
//logic that handles storing new user
//(both email and password has to be in $fillable property of User model
$user->create($request->only(['email', 'password']));
return redirect()->back();
}
...
public function update(App\Http\Requests\UpdateRequest $request, App\User $users, $id) {
//by type-hinting the request class, Laravel "runs" UpdateRequest
//before actual method update is hit
//logic that handles updating a user
//(both email and password has to be in $fillable property of User model
$user = $users->findOrFail($id);
$user->update($request->only(['password']));
return redirect()->back();
}
Omleidingen na validatie verwerken
Soms wilt u misschien wat inloggen om te bepalen waar de gebruiker naartoe wordt omgeleid nadat hij een formulier heeft verzonden. Formulierverzoeken bieden verschillende manieren.
Standaard zijn er 3 variabelen gedeclareerd in de Request $redirect
, $redirectRoute
en $redirectAction
.
Bovenop die 3 variabelen kunt u de getRedirectUrl()
overschrijven.
Hieronder ziet u een voorbeeldverzoek waarin wordt uitgelegd wat u kunt doen.
<?php namespace App;
use Illuminate\Foundation\Http\FormRequest as Request;
class SampleRequest extends Request {
// Redirect to the given url
public $redirect;
// Redirect to a given route
public $redirectRoute;
// Redirect to a given action
public $redirectAction;
/**
* Get the URL to redirect to on a validation error.
*
* @return string
*/
protected function getRedirectUrl()
{
// If no path is given for `url()` it will return a new instance of `Illuminate\Routing\UrlGenerator`
// If your form is down the page for example you can redirect to a hash
return url()->previous() . '#contact';
//`url()` provides several methods you can chain such as
// Get the current URL
return url()->current();
// Get the full URL of the current request
return url()->full();
// Go back
return url()->previous();
// Or just redirect back
return redirect()->back();
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [];
}
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
}