2015-06-02 118 views
0

由於它在文檔的陳述的,如果AJAX驗證失敗,你會得到JSON響應:Laravel AJAX驗證:返回HTML而不是JSON

如果驗證失敗,重定向響應,將產生用戶發送回他們的以前的位置。錯誤也會閃現到會話中,以便顯示。如果該請求是AJAX請求,則具有422狀態碼的HTTP響應將返回給用戶,包括驗證錯誤的JSON表示。

但我更喜歡局部視圖與閃爍的錯誤,這是默認的非AJAX。 那麼是否可以模擬非AJAX或關閉AJAX而不重建源或其他一些尷尬?

順便說一下,罪魁禍首功能是buildFailedValidationResponse。

回答

2

我近來遇到了類似的問題,最終也覆蓋了一個方法。

在Laravel 5.1.20,我不得不方法響應從類照亮\基金會拷貝\ HTTP \ FormRequest成類應用程序\ HTTP \請求\請求,就像你的答案,改變

 if ($this->ajax() || $this->wantsJson()) { 

 if ($this->wantsJson())) { 

這是在應用程序的完整方法\ HTTP \請求\ Request類

public function response(array $errors) 
{ 
    if (!$this->pjax() && ($this->ajax() || $this->wantsJson())) { 
     return new JsonResponse($errors, 422); 
    } 

    return $this->redirector->to($this->getRedirectUrl()) 
          ->withInput($this->except($this->dontFlash)) 
          ->withErrors($errors, $this->errorBag); 
} 
0

管理解決與蠻力的問題。剛剛覆蓋AuthController中的trait方法。對此感覺不好。

protected function buildFailedValidationResponse(Request $request, array $errors) 
{ 
    if (/*$request->ajax() ||*/ $request->wantsJson()) { return new JsonResponse($errors, 422); 
}