簡體   English   中英

如何驗證Laravel中的數組輸入?

[英]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.. 
}

https://stackoverflow.com/a/38327539/3475207

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM