Laravel 5 : 成功验证请求函数

Laravel 5 : on success Validation Request function

在 laravel 5 中,我们现在可以像这样使用请求 classes 进行输入验证:

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

当验证失败时,由于 Request class 中的 response 函数,我可以得到错误信息:

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

但是如果验证成功呢?有没有像这样自动触发的功能:

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

注意:要求如果请求是ajax,函数store的内容不会被执行(就像它不会如果验证失败则执行)。

是的,我在 ValidateWhenResolvedTrait 中找到了 validate 方法,您可以在表单请求中覆盖它 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]));

      }

}

暂无此方法。您可以在您的请求中使用一些 "hacks"(例如覆盖 validate 方法)来执行此操作,但我不推荐它。

Request 的想法是将 validation/authorization 移出控制器。如果您将成功的响应移动到 Request,那么我们会遇到与以前相同的情况(好吧,名称已更改)。

我建议让控制器也处理 ajax:

public function store(StoreItemRequest $request)
{
    $item = Item::create($request->all());
    if($request->ajax())
       return response()->json(['success' => true]);
    return 'success';
}

您尝试在请求中实现此目的是否有原因?