Laravel 5.1 - Return FormRequest 验证的第一个错误
Laravel 5.1 - Return First Error From FormRequest Validation
我有以下表单请求:
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);
}
}
如何 return 错误数组中的第一个错误。
当我手动创建验证器时,我可以执行以下操作:$validator->errors()->first()
但在使用 FormRequest class 时这不起作用。做 errors[0]
只会给我一个偏移异常错误。
我正在使用 iframe 提交,这就是为什么我需要 return 上面的响应。
感谢任何帮助。
您似乎需要使用 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
}
我必须执行以下操作:
$errors['file'][0]
我有以下表单请求:
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);
}
}
如何 return 错误数组中的第一个错误。
当我手动创建验证器时,我可以执行以下操作:$validator->errors()->first()
但在使用 FormRequest class 时这不起作用。做 errors[0]
只会给我一个偏移异常错误。
我正在使用 iframe 提交,这就是为什么我需要 return 上面的响应。
感谢任何帮助。
您似乎需要使用 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
}
我必须执行以下操作:
$errors['file'][0]