Search code examples
laravel-5laravel-validation

Laravel 5 : on success Validation Request function


In laravel 5, we can now use the Request classes for input validation like so :

    public function store(StoreItemRequest $request)
    {
        $item = Item::create($request->all());
        return 'success';
    }

When the validation fails, I can get the errors thanks to the response function in the Request class :

    public function response(array $errors) {
       return response()->json(['errors' => $errors]);
    }

But what if the validation succeeds? Is there a function that would get automatically triggered like so :

    public function ????(){
         if($request->ajax())
           return response()->json(['success' => true]);
    }

Note: it is required that the content of the function store does NOT get executed if the request is ajax (just as it would not get executed if the validation fails).


Solution

  • Yeah, I found validate method in ValidateWhenResolvedTrait which you could override in your form request class;

    public function validate(){
    
         $instance = $this->getValidatorInstance();
    
          if($this->passesAuthorization()){
                 $this->failedAuthorization();
           }elseif(!$instance->passes()){
                  $this->failedValidation($instance);
          }elseif( $instance->passes()){
    
             if($this->ajax())
                throw new HttpResponseException(response()->json(['success' => true]));
    
          }
    
    }