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://127.0.0.1:8000/validation

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

Login
广告