如何在 Laravel 中驗證陣列?


在 Laravel 中驗證輸入資料的方法有很多種。其中一種是使用 Validator 類。第一步是包含此類,如下所示:

use Illuminate\Support\Facades\Validator;

當您使用陣列時,需要在陣列中指定鍵和要使用的規則。例如,考慮以下陣列。在這裡,我們添加了鍵 firstname、lastname 和 address 以及它們的值。使用規則,我們定義所有這些元素都是必填的,並且資料型別為字串。

$formData = array(
   'firstname' => 'Siya',
   'lastname' => 'Nadkarni',
   'address' => 'xyz'
);
$rules['firstname'] = 'required|string';
$rules['lastname'] = 'required|string';
$rules['address'] = 'required|string';

示例 1

現在讓我們使用驗證器測試陣列,如下所示:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class testuserip extends Controller { public function index() { $formData = array( 'firstname' => 'Siya', 'lastname' => 'Nadkarni', 'address' => 'xyz', ); $rules['firstname'] = 'required|string'; $rules['lastname'] = 'required|string'; $rules['address'] = 'required|string'; $validator = Validator::make($formData , $rules); if ($validator->fails()) { echo "Invalid Array"; } else { echo "Array Validation is Successful"; } } }

輸出

執行上述程式碼後,將生成以下輸出。

Array Validation is Successful

示例 2

現在,讓我們檢查另一個示例,我們將刪除 address 欄位並進行測試:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class testuserip extends Controller { public function index() { $formData = array( 'firstname' => 'Siya', 'lastname' => 'Nadkarni' ); $rules['firstname'] = 'required|string'; $rules['lastname'] = 'required|string'; $rules['address'] = 'required|string'; $validator = Validator::make($formData , $rules); if ($validator->fails()) { echo "Invalid Array"; } else { echo "Array Validation is Successfull"; } } }

在上述情況下,陣列中沒有 address 欄位,但規則規定需要 address 欄位,因此當您使用驗證器對其進行測試時,它將失敗,並且此程式會列印一條訊息,提示“無效陣列”,如下所示。

輸出

Invalid Array

示例 3

如果指定了鍵並且沒有定義規則,則驗證器將忽略該鍵並使其透過。

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class testuserip extends Controller { public function index() { $formData = array( 'firstname' => 'Siya', 'lastname' => 'Nadkarni', 'address' => 'xyz', ); $rules['firstname'] = 'required|string'; $rules['lastname'] = 'required|string'; // $rules['address'] = 'required|string'; $validator = Validator::make($formData , $rules); if ($validator->fails()) { echo "Invalid Array"; } else { echo "Array Validation is Successfull"; } } }

輸出

此處刪除了 address 的規則,測試後,上述程式碼的輸出如下:

Array Validation is Successful

示例 4

下面顯示瞭如何驗證數字陣列。其規則如下:

$formData = array(10,20,30,40); $validator = \Validator::make(compact('formData'), [ 'formData' => 'required|array', 'formData.*' => 'integer' ]);

應用的規則是陣列必須有元素,並且這些元素必須是整數值。

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class testuserip extends Controller { public function index() { $formData = array(10,20,30,40); $validator = \Validator::make(compact('formData'), [ 'formData' => 'required|array', 'formData.*' => 'integer' ]); if ($validator->fails()) { echo "Invalid Array"; } else { echo "Array Validation is Successfull"; } } }

輸出

執行上述程式後,將生成以下輸出:

Array Validation is Successful

更新於: 2022-08-29

6K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.