Validator | validate 驗證規則

soulartist發表於2020-12-02

記錄一下 平時就不用再去找了

accepted

欄位值為 yes, on, 或是 1 時,驗證才會透過。這在確認”服務條款”是否同意時很有用。

active_url

欄位值透過 PHP 函式 checkdnsrr 來驗證是否為一個有效的網址。

after:date

驗證欄位是否是在指定日期之後。這個日期將會使用 PHP strtotime 函式驗證。

alpha

欄位僅全數為字母字串時透過驗證。

alpha_dash

欄位值僅允許字母、數字、破折號(-)以及底線(_)

alpha_num

欄位值僅允許字母、數字

array

欄位值僅允許為陣列

before:date

驗證欄位是否是在指定日期之前。這個日期將會使用 PHP strtotime 函式驗證。

between:min,max

欄位值需介於指定的 min 和 max 值之間。字串、數值或是檔案都是用同樣的方式來進行驗證。

confirmed

欄位值需與對應的欄位值 foo_confirmation 相同。例如,如果驗證的欄位是 password ,那對應的欄位 password_confirmation 就必須存在且與 password 欄位相符。

date

欄位值透過 PHP strtotime 函式驗證是否為一個合法的日期。

date_format:format

欄位值透過 PHP date_parse_from_format 函式驗證符合 format 制定格式的日期是否為合法日期。

different:field

欄位值需與指定的欄位 field 值不同。

digits:value

欄位值需為數字且長度需為 value。

digits_between:min,max

欄位值需為數字,且長度需介於 min 與 max 之間。

boolean

欄位必須可以轉換成布林值,可接受的值為 true, false, 1, 0, “1”, “0”。

email

欄位值需符合 email 格式。

exists:table,column

欄位值需與存在於資料庫 table 中的 column 欄位值其一相同。
Exists 規則的基本使用方法

'state' => 'exists:states'

指定一個自定義的欄位名稱

'state' => 'exists:states,abbreviation'

您可以指定更多條件且那些條件將會被新增至 “where” 查詢裡:

'email' => 'exists:staff,email,account_id,1'
/* 這個驗證規則為 email 需存在於 staff 這個資料庫表中 email 欄位中且 account_id=1 */

透過NULL搭配”where”的縮寫寫法去檢查資料庫的是否為NULL

'email' => 'exists:staff,email,deleted_at,NULL'

image

檔案必需為圖片(jpeg, png, bmp, gif 或 svg)

in:foo,bar,…

欄位值需符合事先給予的清單的其中一個值

integer

欄位值需為一個整數值

ip

欄位值需符合 IP 位址格式。

max:value

欄位值需小於等於 value。字串、數字和檔案則是判斷 size 大小。

mimes:foo,bar,…

檔案的 MIME 類需在給定清單中的列表中才能透過驗證。
MIME規則基本用法

'photo' => 'mimes:jpeg,bmp,png'

min:value

欄位值需大於等於 value。字串、數字和檔案則是判斷 size 大小。

not_in:foo,bar,…

欄位值不得為給定清單中其一。

numeric

欄位值需為數字。

regex:pattern

欄位值需符合給定的正規表示式。

注意: 當使用regex模式時,您必須使用陣列來取代”|”作為分隔,尤其是當正規表示式中含有”|”字串。

required

欄位值為必填。

required_if:field,value

欄位值在 field 欄位值為 value 時為必填。

required_with:foo,bar,…

欄位值 僅在 任一指定欄位有值情況下為必填。

required_with_all:foo,bar,…

欄位值 僅在 所有指定欄位皆有值情況下為必填。

required_without:foo,bar,…

欄位值 僅在 任一指定欄位沒有值情況下為必填。

required_without_all:foo,bar,…

欄位值 僅在 所有指定欄位皆沒有值情況下為必填。

same:field

欄位值需與指定欄位 field 等值。

size:value

欄位值的尺寸需符合給定 value 值。對於字串來說,value 為需符合的字串長度。對於數字來說,value 為需符合的整數值。對於檔案來說,value 為需符合的檔案大小(單位 kb)。

timezone

欄位值透過 PHP timezone_identifiers_list 函式來驗證是否為有效的時區。

unique:table,column,except,idColumn

欄位值在給定的資料庫中需為唯一值。如果 column(欄位) 選項沒有指定,將會使用欄位名稱。

Occasionally, you may need to set a custom connection for database queries made by the Validator. As seen above, setting unique:users as a validation rule will use the default database connection to query the database. To override this, do the following:

$verifier = App::make('validation.presence');

$verifier->setConnection('connectionName');

$validator = Validator::make($input, [
    'name' => 'required',
    'password' => 'required|min:8',
    'email' => 'required|email|unique:users',
]);

$validator->setPresenceVerifier($verifier);

唯一(Unique)規則的基本用法

'email' => 'unique:users'

指定一個自定義的欄位名稱

'email' => 'unique:users,email_address'

強制唯一規則忽略指定的 ID

'email' => 'unique:users,email_address,10'

增加額外的 Where 條件

您也可以指定更多的條件式到 “where” 查詢語句中:

'email' => 'unique:users,email_address,NULL,id,account_id,1'

上述規則為只有 account_id 為 1 的資料列會做唯一規則的驗證。

url

欄位值需符合 URL 的格式。

注意: 此函式會使用 PHP filter_var 方法驗證。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章