Suche…
Einführung
Benutzerdefinierte Anforderungen (oder Formularanforderungen) sind in Situationen nützlich, in denen eine Anforderung autorisiert und validiert werden soll, bevor die Controller-Methode ausgeführt wird.
Es gibt zwei praktische Verwendungszwecke: Erstellen und Aktualisieren eines Datensatzes, während für jede Aktion unterschiedliche Validierungs- (oder Berechtigungs-) Regeln gelten.
Die Verwendung von Formularanfragen ist trivial, man muss die Anforderungsklasse in method eingeben.
Syntax
- PHP Handwerker make: request name_of_request
Bemerkungen
Anfragen sind hilfreich, wenn Sie Ihre Validierung vom Controller trennen. Sie können auch überprüfen, ob die Anforderung autorisiert ist.
Anfragen erstellen
php artisan make:request StoreUserRequest
php artisan make:request UpdateUserRequest
Hinweis : Sie können auch die Verwendung von Namen wie StoreUser oder UpdateUser (ohne Anhang " Request" ) in Betracht ziehen, da sich Ihre FormRequests im Ordner
app/Http/Requests/
Httpapp/Http/Requests/
.
Formularanforderung verwenden
Nehmen wir an, wir fahren mit dem Anwenderbeispiel fort (möglicherweise verfügen Sie über einen Controller mit Speichermethode und Aktualisierungsmethode). Um FormRequests zu verwenden, verwenden Sie Typanweisungen für die jeweilige Anforderung.
...
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();
}
Umleitungen nach der Validierung behandeln
Manchmal möchten Sie sich anmelden, um zu bestimmen, wohin der Benutzer nach dem Senden eines Formulars weitergeleitet wird. Formularanfragen bieten verschiedene Möglichkeiten.
Standardmäßig sind 3 Variablen in der Request $redirect
, $redirectRoute
und $redirectAction
deklariert.
getRedirectUrl()
diesen 3 Variablen können Sie den Main-Redirect-Handler getRedirectUrl()
.
Nachstehend finden Sie eine Musteranfrage, in der beschrieben wird, was Sie tun können.
<?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;
}
}