Laravel - 驗證



驗證是設計應用程式時最重要的方面之一。它驗證傳入的資料。預設情況下,基礎控制器類使用ValidatesRequests特性,該特性提供了一種方便的方法來使用各種強大的驗證規則來驗證傳入的HTTP請求。

Laravel 中可用的驗證規則

Laravel 將始終檢查會話資料中的錯誤,如果可用,則自動將其繫結到檢視。因此,重要的是要注意,$errors變數將在每次請求中始終可在您的所有檢視中使用,允許您方便地假設$errors變數始終已定義並且可以安全使用。下表顯示了 Laravel 中所有可用的驗證規則。

Laravel 中可用的驗證規則
已接受 有效網址 之後 (日期)
字母 字母數字短劃線 字母數字
陣列 之前 (日期) 介於兩者之間
布林值 已確認 日期
日期格式 不同 數字
數字範圍 電子郵件 存在 (資料庫)
圖片 (檔案) 在…之中 整數
IP 地址 JSON 最大值
MIME 型別(檔案) 最小值 不在…之中
數值 正則表示式 必需
如果必需 除非必需 與…一起必需
與所有一起必需 無…時必需 無所有時必需
相同 大小 字串
時區 唯一 (資料庫) 網址

$errors變數將是Illuminate\Support\MessageBag的例項。錯誤訊息可以透過新增如下所示的程式碼在檢視檔案中顯示。

@if (count($errors) > 0)
   <div class = "alert alert-danger">
      <ul>
         @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
         @endforeach
      </ul>
   </div>
@endif

示例

步驟 1 - 透過執行以下命令建立一個名為ValidationController的控制器。

php artisan make:controller ValidationController --plain

步驟 2 - 成功執行後,您將收到以下輸出:

ValidationController

步驟 3 - 將以下程式碼複製到

app/Http/Controllers/ValidationController.php 檔案。

app/Http/Controllers/ValidationController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ValidationController extends Controller {
   public function showform() {
      return view('login');
   }
   public function validateform(Request $request) {
      print_r($request->all());
      $this->validate($request,[
         'username'=>'required|max:8',
         'password'=>'required'
      ]);
   }
}

步驟 4 - 建立一個名為resources/views/login.blade.php的檢視檔案,並將以下程式碼複製到該檔案中。

resources/views/login.blade.php

<html>
   
   <head>
      <title>Login Form</title>
   </head>

   <body>
      
      @if (count($errors) > 0)
         <div class = "alert alert-danger">
            <ul>
               @foreach ($errors->all() as $error)
                  <li>{{ $error }}</li>
               @endforeach
            </ul>
         </div>
      @endif
      
      <?php
         echo Form::open(array('url'=>'/validation'));
      ?>
      
      <table border = '1'>
         <tr>
            <td align = 'center' colspan = '2'>Login</td>
         </tr>
         <tr>
            <td>Username</td>
            <td><?php echo Form::text('username'); ?></td>
         </tr>
         <tr>
            <td>Password</td>
            <td><?php echo Form::password('password'); ?></td>
         </tr>
         <tr>
            <td align = 'center' colspan = '2'
               ><?php echo Form::submit('Login'); ?  ></td>
         </tr>
      </table>
      
      <?php
         echo Form::close();
      ?>
   
   </body>
</html>

步驟 5 - 在app/Http/routes.php中新增以下幾行。

app/Http/routes.php

Route::get('/validation','ValidationController@showform');
Route::post('/validation','ValidationController@validateform');

步驟 6 - 訪問以下網址以測試驗證。

https://:8000/validation

步驟 7 - 單擊“登入”按鈕,無需在文字欄位中輸入任何內容。輸出將如下圖所示。

Login
廣告