Laravel - 验证

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

可用的验证规则Laravel

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

Laravel中可用的验证规则
接受活动网址之后(日期)
AlphaAlpha DashAlpha数字
数组之前(日期)介于
布尔确认日期
日期格式不同数字
数字之间电子邮件存在(数据库)
图像(文件)In整数
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步 : 访问以下URL以测试验证.

http://localhost:8000/validation

第7步 : 单击"登录"按钮,不在文本字段中输入任何内容.输出将如下图所示.

登录