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

2021-07-17 16:41 更新

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

php artisan make:rule Uppercase 

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

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

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

    /**
     * 獲取校驗(yàn)錯誤信息
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute must be uppercase.';
    }
} 

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

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

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

use App\Rules\Uppercase;

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號