中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用Laravel框架怎么實現一個表單驗證功能

發布時間:2020-12-10 15:08:02 來源:億速云 閱讀:169 作者:Leah 欄目:開發技術

這篇文章給大家介紹利用Laravel框架怎么實現一個表單驗證功能,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

基礎驗證例子

 代碼如下:
$validator = Validator::make(
array('name' => 'Dayle'),
array('name' => 'required|min:5')
);

傳遞給 make 函數的第一個參數是待驗證的數據,第二個參數是對該數據需要應用的驗證規則。

多個驗證規則可以通過 "|" 字符進行隔開,或者作為數組的一個單獨的元素。

通過數組指定驗證規則

代碼如下:
$validator = Validator::make(
array('name' => 'Dayle'),
array('name' => array('required', 'min:5'))
);

一旦一個 Validator 實例被創建,可以使用 fails (或者 passes)函數執行這個驗證。

代碼如下:
if ($validator->fails())
{
// The given data did not pass validation
}


如果驗證失敗,您可以從驗證器中獲取錯誤消息。

復制代碼 代碼如下:

$messages = $validator->messages();


您也可以使用 failed 函數得到不帶錯誤消息的沒有通過驗證的規則的數組。

代碼如下:
$failed = $validator->failed();

文件驗證

Validator 類提供了一些驗證規則用于驗證文件,比如 size、mimes等。在驗證文件的時候,您可以和其他驗證一樣傳遞給驗證器。

附帶錯誤消息

在一個 Validator 實例上調用 messages 函數之后,將會得到一個 MessageBag 實例,該實例擁有很多處理錯誤消息的方便的函數。

獲取一個域的第一個錯誤消息

 代碼如下:
echo $messages->first('email');

獲取一個域的全部錯誤消息

代碼如下:
foreach ($messages->get('email') as $message)
{
//
}

獲取全部域的全部錯誤消息

代碼如下:
foreach ($messages->all() as $message)
{
//
}

檢查一個域是否存在消息

 代碼如下:
if ($messages->has('email'))
{
//
}


以某種格式獲取一條錯誤消息

 代碼如下:
echo $messages->first('email', '<p>:message</p>');


  注意: 默認情況下,消息將使用與 Bootstrap 兼容的語法進行格式化。

  以某種格式獲取所有錯誤消息

代碼如下:
  foreach ($messages->all('<li>:message</li>') as $message)
  {
  //
  }

錯誤消息 & 視圖

一旦您執行了驗證,您需要一種簡單的方法向視圖反饋錯誤消息。這在 Lavavel 中能夠方便的處理。以下面的路由作為例子:

代碼如下:
Route::get('register', function()
{
return View::make('user.register');
});
Route::post('register', function()
{
$rules = array(...);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
{
return Redirect::to('register')->withErrors($validator);
}
});


注意當驗證失敗,我們使用 withErrors 函數把 Validator 實例傳遞給 Redirect。這個函數將刷新 Session 中保存的錯誤消息,使得在下次請求中能夠可用。

然而,注意我們沒有必要明確的在 GET 路由中綁定錯誤消息到路由。這是因為 Laravel 總會檢查 Session 中的錯誤,并自動綁定它們到視圖如果它們是可用的。所以,對于每個請求,一個 $errors 變量在所有視圖中總是可用的,允許您方便的認為 $errors 總是被定義并可以安全使用的。$errors 變量將是一個 MessageBag 類的實例。

所以,在跳轉之后,您可以在視圖中使用自動綁定的 $errors 變量:

 代碼如下:
<&#63;php echo $errors->first('email'); &#63;>


  可用的驗證規則

  下面是一個所有可用的驗證規則的列表以及它們的功能:

代碼如下:
Accepted
 Active URL
 After (Date)
 Alpha
 Alpha Dash
 Alpha Numeric
 Before (Date)
 Between
 Confirmed
 Date
 Date Format
 Different
 E-Mail
 Exists (Database)
 Image (File)
 In
 Integer
 IP Address
 Max
 MIME Types
 Min
 Not In
 Numeric
 Regular Expression
 Required
 Required If
 Required With
 Required Without
 Same
 Size
 Unique (Database)

accepted

驗證此規則的值必須是 yes、 on 或者是 1。這在驗證是否同意"服務條款"的時候非常有用。

active_url

驗證此規則的值必須是一個合法的 URL,根據 PHP 函數 checkdnsrr。

after:date

驗證此規則的值必須在給定日期之后,日期將通過 PHP 函數 strtotime 傳遞。

alpha
  驗證此規則的值必須全部由字母字符構成。

alpha_dash
  驗證此規則的值必須全部由字母、數字、中劃線或下劃線字符構成。

alpha_num
  驗證此規則的值必須全部由字母和數字構成。

before:date
  驗證此規則的值必須在給定日期之前,日期將通過 PHP 函數 strtotime 傳遞。

between:min,max
  驗證此規則的值必須在給定的 min 和 max 之間。字符串、數字以及文件都將使用大小規則進行比較。

confirmed
  驗證此規則的值必須和 foo_confirmation 的值相同。比如,需要驗證此規則的域是 password,那么在輸入中必須有一個與之相同的 password_confirmation 域。

date
  驗證此規則的值必須是一個合法的日期,根據 PHP 函數 strtotime。

date_format:format
  驗證此規則的值必須符合給定的 format 的格式,根據 PHP 函數 date_parse_from_format。

different:field
  驗證此規則的值必須與指定的 field 域的值不同。

email
  驗證此規則的值必須是一個合法的電子郵件地址。

exists:table,column
  驗證此規則的值必須在指定的數據庫的表中存在。

  Exists 規則的基礎使用

代碼如下:
'state' => 'exists:states'

指定列名

代碼如下:
'state' => 'exists:states,abbreviation'

您也可以指定更多的條件,將以 "where" 的形式添加到查詢。

 代碼如下:
'email' => 'exists:staff,email,account_id,1'

image
  驗證此規則的值必須是一個圖片 (jpeg, png, bmp 或者 gif)。

  in:foo,bar,...

  驗證此規則的值必須在給定的列表中存在。

  integer

  驗證此規則的值必須是一個整數。

 
  驗證此規則的值必須是一個合法的 IP 地址。

max:value

  驗證此規則的值必須小于最大值 value。字符串、數字以及文件都將使用大小規則進行比較。

  mimes:foo,bar,...

  驗證此規則的文件的 MIME 類型必須在給定的列表中。

  MIME 規則的基礎使用

代碼如下:
'photo' => 'mimes:jpeg,bmp,png'

min:value
  驗證此規則的值必須大于最小值 value。字符串、數字以及文件都將使用大小規則進行比較。

not_in:foo,bar,...

  驗證此規則的值必須在給定的列表中不存在。

numeric

  驗證此規則的值必須是一個數字。

regex:pattern

  驗證此規則的值必須符合給定的正則表達式。

  注意: 當使用 regex 模式的時候,有必要使用數組指定規則,而不是管道分隔符,特別是正則表達式中包含一個管道字符的時候。

required

  驗證此規則的值必須在輸入數據中存在。

required_if:field,value

  當指定的域為某個值的時候,驗證此規則的值必須存在。

required_with:foo,bar,...

  僅當指定的域存在的時候,驗證此規則的值必須存在。

required_without:foo,bar,...

  僅當指定的域不存在的時候,驗證此規則的值必須存在。

same:field

  驗證此規則的值必須與給定域的值相同。

size:value

驗證此規則的值的大小必須與給定的 value 相同。對于字符串,value 代表字符的個數;對于數字,value 代表它的整數值,對于文件,value 代表文件以KB為單位的大小。

unique:table,column,except,idColumn

驗證此規則的值必須在給定的數據庫的表中唯一。如果 column 沒有被指定,將使用該域的名字。

Unique 規則的基礎使用

代碼如下:
'email' => 'unique:users'
指定列名
'email' => 'unique:users,email_address'
強制忽略一個給定的 ID
'email' => 'unique:users,email_address,10'

url

  驗證此規則的值必須是一個合法的 URL。

  定制錯誤消息

  如果有需要,您可以使用定制的錯誤消息代替默認的消息。這里有好幾種定制錯誤消息的方法。

  傳遞定制消息到驗證器

代碼如下:
$messages = array(
 'required' => 'The :attribute field is required.',
 );
 $validator = Validator::make($input, $rules, $messages);

注意: :attribute 占位符將被實際的進行驗證的域的名字代替,您也可以在錯誤消息中使用其他占位符。

其他驗證占位符

 代碼如下:
  $messages = array(
  'same' => 'The :attribute and :other must match.',
  'size' => 'The :attribute must be exactly :size.',
  'between' => 'The :attribute must be between :min - :max.',
  'in' => 'The :attribute must be one of the following types:
:values',
  );


  有些時候,您可能希望只對一個指定的域指定定制的錯誤消息:

  對一個指定的域指定定制的錯誤消息

代碼如下:
$messages = array(
'email.required' => 'We need to know your e-mail address!',
);


在一些情況下,您可能希望在一個語言文件中指定錯誤消息而不是直接傳遞給 Validator。為了實現這個目的,請在 app/lang/xx/validation.php 文件中添加您的定制消息到 custom 數組。

在語言文件中指定錯誤消息

 代碼如下:
'custom' => array(
'email' => array(
'required' => 'We need to know your e-mail address!',
),
),

定制驗證規則

Laravel 提供了一系列的有用的驗證規則;但是,您可能希望添加自己的驗證規則。其中一種方法是使用 Validator::extend 函數注冊定制的驗證規則:

注冊一個定制的驗證規則

代碼如下:
Validator::extend('foo', function($attribute, $value, $parameters)
{
return $value == 'foo';
});

注意: 傳遞給 extend 函數的規則的名字必須符合 "snake cased" 命名規則。

  定制的驗證器接受三個參數:待驗證屬性的名字、待驗證屬性的值以及傳遞給這個規則的參數。

  您也可以傳遞一個類的函數到 extend 函數,而不是使用閉包:

代碼如下:
  Validator::extend('foo', 'FooValidator@validate');

  注意您需要為您的定制規則定義錯誤消息。您既可以使用一個行內的定制消息數組,也可以在驗證語言文件中進行添加。

  您也可以擴展 Validator 類本身,而不是使用閉包回調擴展驗證器。為了實現這個目的,添加一個繼承自 Illuminate\Validation\Validator 的驗證器類。您可以添加在類中添加以 validate 開頭的驗證函數:

擴展驗證器類

代碼如下:
<&#63;php
class CustomValidator extends Illuminate\Validation\Validator {
public function validateFoo($attribute, $value, $parameters)
{
return $value == 'foo';
}
}

下面,您需要注冊定制的驗證器擴展:

您需要注冊定制的驗證器擴展

 代碼如下:
Validator::resolver(function($translator, $data, $rules, $messages)
{
return new CustomValidator($translator, $data, $rules, $messages);
});

  當創建一個定制的驗證規則,您有時需要為錯誤消息定義一個定制的占位符。為了實現它,您可以像上面那樣創建一個定制的驗證器,并且在驗證器中添加一個 replaceXXX 函數:

代碼如下:
protected function replaceFoo($message, $attribute, $rule, $parameters)
{
return str_replace(':foo', $parameters[0], $message);
}

關于利用Laravel框架怎么實現一個表單驗證功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉屏| 长丰县| 乃东县| 柘城县| 安丘市| 昭通市| 民县| 班玛县| 广汉市| 长治县| 边坝县| 鄂州市| 湟源县| 望江县| 南溪县| 萨嘎县| 津南区| 锡林郭勒盟| 桂林市| 紫阳县| 南江县| 隆昌县| 巫溪县| 临邑县| 封丘县| 黄山市| 贡山| 廉江市| 阳谷县| 井冈山市| 阿巴嘎旗| 湖口县| 上犹县| 台中市| 宾川县| 高唐县| 泽库县| 桓台县| 汾西县| 卫辉市| 东乡族自治县|