Laravel框架 【自定義對象驗證規則】常用的兩種規則。

第一種:利用閉包方法(開發中最常用)

         如果你在應用程序中只需要使用一次自定義規則的功能,則可以使用閉包而不是規則對象。閉包接收屬性的名稱,屬性的值如果驗證失敗則應該使用回調中的 $fail

$validator = Validator::make($request->all(), [
    'title' => [
        'required',
        'max:255',
        function ($attribute, $value, $fail) {
            if ($value === 'foo') {  //驗證規則
                $fail($attribute.' is invalid.'); //驗證失敗提示信息
            }
        },
    ],
]);

第二種:使用規則對象

   (1)使用 Artisan 命令 make:rule 來生成新的規則對象。接下來,讓我們用這個命令生成一個驗證字符串是大寫的規則。Laravel 會將新的規則存放在 app/Rules 目錄中:

php artisan make:rule Uppercase

(2)一旦創建了規則,我們就可以定義它的行爲。規則對象包含兩個方法: passes 和 messagepasses 方法接收屬性值和名稱,並根據屬性值是否符合規則而返回 true 或 false。 message 方法應返回驗證失敗時應使用的驗證錯誤消息:

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class Uppercase implements Rule
{
    /**
     * 判斷驗證規則是否通過。
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return strtoupper($value) === $value;
    }

    /**
     * 獲取驗證錯誤消息。
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute must be uppercase.';
    }
}

一旦規則對象被定義好後,你可以通過將規則對象的實例和其他驗證規則一起來傳遞給驗證器:

use App\Rules\Uppercase;

$request->validate([
    'name' => ['required', 'string', new Uppercase],
]);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章