Laravel - 验证

验证是设计应用程序时最重要的方面。它验证传入的数据。默认情况下,基本控制器类使用 ValidatesRequests 特性,该特性提供了一种方便的方法,可以使用各种强大的验证规则来验证传入的 HTTP 请求。

Laravel 中可用的验证规则

Laravel 将始终检查会话数据中的错误,并自动将它们绑定到视图(如果可用)。因此,重要的是要注意,$errors 变量在每个请求的所有视图中始终可用,让您可以方便地假设 $errors 变量始终已定义并且可以安全使用。下表显示了 Laravel 中所有可用的验证规则。

Laravel 中可用的验证规则
Accepted Active URL After (Date)
Alpha Alpha Dash Alpha Numeric
Array Before (Date) Between
Boolean Confirmed Date
Date Format Different Digits
Digits Between E-Mail Exists (Database)
Image (File) In Integer
IP Address JSON Max
MIME Types(File) Min Not In
Numeric Regular Expression Required
Required If Required Unless Required With
Required With All Required Without Required Without All
Same Size String
Timezone Unique (Database) URL

$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 file.

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 − 访问以下网址以测试验证。

http://localhost:8000/validation

步骤 7 − 单击 "登录" 按钮,而无需在文本字段中输入任何内容。输出将如下图所示。

Login