[英]How can I validate array inputs in Laravel?
這是我的代碼:
public function store(Request $request)
{
try {
$this->validate($request, [
'activity_licenses' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
]);
} catch (\ValidationException $e) {
return [false, $e->getMessage()];
}
.
.
.
實際上activity_licenses
是一個數組。 這是HTML:
<input type="file" name="activity_licenses[] />
<input type="file" name="activity_licenses[] />
我該如何驗證? 更為重要的是,我該如何捕捉失敗原因(錯誤消息) ? 當前$e->getMessage()
在失敗時為空。
嘗試:
$input_data = $request->all();
$validator = Validator::make(
$input_data, [
'image_file.*' => 'required|mimes:jpg,jpeg,png,bmp|max:20000'
],[
'image_file.*.required' => 'Please upload an image',
'image_file.*.mimes' => 'Only jpeg,png and bmp images are allowed',
'image_file.*.max' => 'Sorry! Maximum allowed size for an image is 20MB',
]
);
if ($validator->fails()) {
// Validation error..
}
Laravel文檔中描述了數組驗證,並根據您的情況進行說明:
$this->validate($request, [
'activity_licenses.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
])
使用控制器中的$this->validate()
,錯誤消息將自動傳遞到您的視圖,變量$errors
保留它。 您應該檢查:在Laravel文檔中使用錯誤消息
一個例子是(摘自文檔):
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@萬一
您可能希望通過以下方式手動調用驗證器進行驗證:
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}
我的建議是您應該閱讀文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.