Laravel 8 使用規(guī)則對象

2021-07-17 16:41 更新

盡管 Laravel 提供了多種多樣有用的校驗規(guī)則;但您亦可進行自定義。注冊自定義校驗規(guī)則的方法之一便是使用規(guī)則對象。您可以使用 make:rule 生成新的規(guī)則對象。接下來,讓我們使用該命令生成一個校驗字符串是否是大寫的規(guī)則, Laravel 會將新規(guī)則置于 app/Rules 目錄中:

php artisan make:rule Uppercase 

當規(guī)則創(chuàng)建成功后,我們便可定義其行為。規(guī)則對象包含兩個方法: passesmessagepasses 方法接收屬性值及其名稱,它應該返回以 truefalse 表示的屬性值是否通過驗證的結果。 message 方法應該返回驗證失敗時使用的錯誤信息:

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class Uppercase implements Rule
{
    /**
     * 判斷是否通過驗證規(guī)則
     *
     * @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.';
    }
} 

如果您想要從您的翻譯文件中獲取錯誤信息,您可以在您的 message 中使用 trans 助手方法:

/**
 * 獲取校驗錯誤信息
 *
 * @return string
 */
public function message()
{
    return trans('validation.uppercase');
}

一旦定義了規(guī)則,您便可以通過將規(guī)則的實例化與其他校驗規(guī)則一起傳遞給驗證器:

use App\Rules\Uppercase;

$request->validate([
    'name' => ['required', 'string', new Uppercase],
]); 
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號