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;
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow