【发布时间】:2019-10-02 21:57:14
【问题描述】:
作为表单的一部分,我想提交最多五张图像,并在 FormRequest 中使用自定义错误消息对其进行验证。
表单的文件提交部分如下所示:
<div id="dzone" class="form-group dropzone {{ $errors->has('images') ? ' has-error' : '' }}">
<div class="fallback">
<label for="images[]">Select up to five images...</label>
<input name="images[]" type="file" multiple/>
</div>
@if ($errors->has('images'))
<span class="help-block">{{ $errors->first('images') }}</span>
@endif
</div>
我的 FormRequest 如下所示:
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreListingFormRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required|max:255',
'body' => 'required|max:2000',
'price' => 'required|max:100|regex:/^\d{1,13}(\.\d{1,4})?$/',
'contact_details' => 'required',
"images" => "required|array|min:1|max:5",
'images.*' => 'required|mimes:jpg,jpeg,png,bmp|max:2000',
'category_id' => [
'required',
\Illuminate\Validation\Rule::exists('categories', 'id')->where(function ($query) {
$query->where('usable', true);
})
],
'area_id' => [
'required',
\Illuminate\Validation\Rule::exists('areas', 'id')->where(function ($query) {
$query->where('usable', true);
})
]
];
}
public function messages()
{
return [
'contact_details.required' => 'At least one method of contact is required for your advert.',
'images.min' => 'Please upload one or more images',
'images.max' => 'A maximum of five images are allowed',
'images.*.mimes' => 'Only jpeg,png and bmp images are allowed',
'images.*.max' => 'Sorry! Maximum allowed size for an image is 2MB',
];
}
}
图像验证无法正常工作:
首先,如果我在图像数组上设置 min:1,如果我不提交任何图像,它不会返回错误消息,但如果我将其设置为 2,它会返回我的自定义错误消息。
我无法为图像返回任何错误消息。.mimes' 或 'images..max'
我在这里做错了什么?
【问题讨论】:
-
我现在可以执行以下操作:'images.required' => '请上传一张或多张图片', 'images.max' => '最多允许五张图片'
-
但数组项仍然没有
-
我看看如果我添加 $errors->has('images.0') 我可以得到错误消息,但肯定有更好的方法。
-
on 'images.*' remove required and put image instead and also try using this sintax image.*.file => 让我知道这些场景的输出