2017-02-11 95 views
0

我有以下形式要求:Laravel 5.1 - 返回第一個錯誤從FormRequest驗證

class FileRequest extends Request 
{ 

    public function authorize() 
    { 
     return true; 
    } 

    public function rules() 
    { 

     $rules = []; 

     if($this->file_type == 'image') 
     $rules['file'] = 'required|image|mimes:jpg,jpeg,gif|max:244|image_size:>=360,>=180'; 
    else 
     $rules['file'] = 'required|mimes:doc,pdf,docx,txt,rtf|max:1000'; 

     return $rules; 

    } 

    public function messages() 
    { 
     $messages = [ 
     'file.image_size' => 'The image size is incorrect.' 
     ]; 

     return $messages; 
    } 

    public function response(array $errors) 
    { 
     $content = "<textarea data-type=\"application/json\">{\"ok\": false, \"message\": \"" . $errors[0] . "\" }</textarea>"; 
     return response($content); 

    } 



} 

如何從錯誤陣列返回的第一個錯誤。

當我手動創建驗證程序時,我可以執行以下操作:$validator->errors()->first()但使用FormRequest類時不起作用。做errors[0]只是給我一個抵消異常錯誤。

我正在使用iframe提交,這就是爲什麼我需要返回上面的響應。

任何幫助表示讚賞。

回答

0

我已經做到以下幾點:通過進行驗證

$errors['file'][0] 
0

您似乎需要使用laravel的驗證器系統。然後你可以使用:$ validator-> messages();因爲有所有的錯誤。 如果您使用$ validator-> messages()[0];你會有第一條消息。

我建議你類似的東西

 public function store(Request $request) 
    { 
    $validator = Validator::make($request->all(), [ 
     'file' =>'required|image|mimes:jpg,jpeg,gif|max:244|image_size:>=360,>=180'; 

    ]); 

    if ($validator->fails()) { 
     return redirect('post/create') 
        ->withErrors($validator) 
        ->withInput(); 
    } 

    // Store the file 
} 
+0

我知道該怎麼做,但我使用了一個表格請求類我想在我的表單請求類中實現它。 – adam78

+0

protected function formatErrors(Validator $ validator) { return $ validator-> errors() - > all(); }你試過這個嗎? – Exarkun