Szukaj…
Wprowadzenie
Niestandardowe żądania (lub żądania formularza) są przydatne w sytuacjach, gdy chce się autoryzować i zatwierdzić żądanie przed użyciem metody kontrolera.
Można pomyśleć o dwóch praktycznych zastosowaniach, tworzeniu i aktualizowaniu rekordu, podczas gdy każde działanie ma inny zestaw reguł sprawdzania poprawności (lub autoryzacji).
Używanie formularzy jest proste, należy wpisać podpowiedź do klasy żądania w metodzie.
Składnia
- php rzemieślnik make: żądanie nazwa_request
Uwagi
Żądania są przydatne podczas oddzielania weryfikacji od kontrolera. Pozwala także sprawdzić, czy żądanie jest autoryzowane.
Tworzenie zapytań
php artisan make:request StoreUserRequest
php artisan make:request UpdateUserRequest
Uwaga : Możesz również rozważyć użycie nazw takich jak StoreUser lub UpdateUser (bez dodatku Request ), ponieważ Twoje żądania Form Form są umieszczone w folderze
app/Http/Requests/
.
Korzystanie z formularza zapytania
Powiedzmy, że kontynuuj z przykładem użytkownika (możesz mieć kontroler z metodą sklepu i metodą aktualizacji). Aby użyć FormRequests, użyj podpowiedzi do konkretnego żądania.
...
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();
}
Obsługa przekierowań po sprawdzeniu poprawności
Czasami możesz potrzebować loginu, aby określić, dokąd użytkownik zostanie przekierowany po przesłaniu formularza. Formularze wniosków dają różne sposoby.
Domyślnie w żądaniu $redirect
są zadeklarowane 3 zmienne, $redirectRoute
i $redirectAction
.
Oprócz tych 3 zmiennych możesz zastąpić główny getRedirectUrl()
obsługi przekierowań getRedirectUrl()
.
Poniżej podano przykładowe żądanie wyjaśniające, co możesz zrobić.
<?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;
}
}