composer require nimaebrazi/laravel-validatorIf using laravel 5.4.* and older version you nedd add service provider in config/app.php
'providers' => [ ... \nimaebrazi\LaravelValidator\LaravelValidatorServiceProvider::class, ... ]Publish config:
php artisan vendor:publishYou can change message path file in config: laravel_validator.php
Add this key in messages.php file: resources/lang/YOUR_LANGUAGE/messages.php
"validation_failed" => "messages.validation_failed"This package throws an exception named ValidationException. For handling Laravel Exception, add below code in Handler.php file and custumize it for your project.
use nimaebrazi\LaravelValidator\src\Validator\ValidationException; use Symfony\Component\HttpFoundation\Response; ... /** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Exception $exception * @return \Illuminate\Http\Response */ public function render($request, Exception $exception) { if($exception instanceof ValidationException){ return response()->json([ 'status' => Response::HTTP_UNPROCESSABLE_ENTITY, 'description' => $exception->getMessage(), 'data' => [ 'errors' => $exception->getErrors() ] ], 422); } return parent::render($request, $exception); }Step 1:
Create a validation class:
\nimaebrazi\LaravelValidator\Validator\AbstractValidator
public function messages(): array & public function customAttributes(): array methods are optional.
use nimaebrazi\LaravelValidator\Validator\AbstractValidator; class UpdateUserProfile extends AbstractValidator { /** * Rules of validation. * * @return array */ public function rules(): array { return [ 'name' => 'required|min:3', ]; } // OPTIONAL /** * Messages of rules. * * @return array */ public function messages(): array { return [ // ]; } // OPTIONAL /** * Custom attributes of rules. * * @return array */ public function customAttributes(): array { return [ // ]; } }Step 2: Inject class to a controller:
class ApiUserController extends Controller { /** * @param Request $request * @param UpdateUserProfile $validator * @throws \Exception * @throws \nimaebrazi\LaravelValidator\src\Validator\ValidationException */ public function update(Request $request, UpdateUserProfile $validator) { $validator->make($request->all())->validate(); }- When you call
validatefunction package throws default exception. If you want handle other way:
class ApiUserController extends Controller { /** * @param Request $request * @param UpdateUserProfile $validator * @throws \Exception * @throws \nimaebrazi\LaravelValidator\src\Validator\ValidationException */ public function update(Request $request, UpdateUserProfile $validator) { $validator->make($request->all()); if($validator->fails()){ // your codes } if($validator->passes()){ // your codes } }Are you see document when use validator rules? I think it is so hard, when forget a rule and parameters. You can use RuleManager of this package.
use nimaebrazi\LaravelValidator\Validator\AbstractValidator; class UpdateUserProfile extends AbstractValidator { /** * Rules of validation. * * @return array */ public function rules(): array { return [ 'name' => $this->ruleManager()->required()->min('3')->make(), 'age' => $this->ruleManager()->required()->numeric()->max('3')->min('0')->make(), 'other' => $this->ruleManager()->required()->string()->make() ]; } }