A package that helps developer to segregate the validation logic from controller to a separate dedicated class. Lumen
doesn't have any FormRequest class like Laravel. This will let you do that.
- Install the package by running
composer require anik/form-requestfrom your terminal being in the project directory. - Register
\Anik\Form\FormRequestServiceProvider::classto yourbootstrap/app.phpas a provider.
// bootstrap/app.php
$app->register(\Anik\Form\FormRequestServiceProvider::class);- Create a class that extends
Anik\Form\FormRequestclass. - You must override
rulesmethod of theAnik\Form\FormRequestclass. Define your validation rules in it. Must return an array. - You can define validation messages by overriding
messagesmethod. Default is[]. - You can define custom pretty attribute names by overriding
attributesmethod. Default is[]. - You can override
authorizemethod to define the authorization logic if the client is authorized to submit the form. Must return a boolean value. Default istrue. When returningfalse, it'll raise\Illuminate\Auth\Access\AuthorizationExceptionexception. - If the validation fails, it will throw
Illuminate\Validation\ValidationException.- By default, it returns response in
{"message": "The given data was invalid.", "errors": []}format with status code422. Handle the exception inapp/Exceptions/Handler.php'srendermethod if you want to modify the response. - Override the
statusCodemethod to return the status of your choice. Must returnint. Default is422. - Override the
errorMessagemethod to return the message of your choice. Must returnstring. Default isThe given data was invalid. - Override the
errorResponsemethod to return response of your choice when the validation fails. Must return either of type\Symfony\Component\HttpFoundation\Responseornull.
- By default, it returns response in
- Now you can inject your Request class through the method injections. All the methods
of
Laravel\Lumen\Http\Requestclass is available in your request class. - The
FormRequest::validated()method will return the validated data when the validation passes.