簡體   English   中英

如何在 Laravel 自定義驗證中獲取其他字段值

[英]How to get other field values in Laravel custom validation

我正在使用自定義驗證規則來驗證我從文件中讀取的一些數據。 規則如下:

$this->rules = [
            'file_data'          => 'required|array',
            'file_data.*.id'     => 'required',
            'file_data.*.name'   => 'required',
            'file_data.*.code'   => 'required|code_exists' 
        ];

並應用這些規則,例如

$validationResult = validator($data, $this->rules, $customMessageArray);

code_exists ,我需要id的值來運行驗證。 我試圖通過$parameters傳遞值,比如code_exists:id ,但它給了我參數數組中的字符串id 如何傳遞實際值?

你應該得到數組的鍵,然后得到id。 像那樣:

'file_data.*.code' => [
    'required',
    function($attribute, $value, $fail) use ($data) {
        $index = explode('.', $attribute)[1];
        $id = data_get($data, "file_data.$index.id");

        $isExists = DB::table('table_name')->whereId($id)->whereCode($value)->exists();
        if (!$isExists) {
            return $fail(__('validation.exists', ['attribute' => $attribute]));
        }
   }
],

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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