Laravel 验证


在设计应用程序时,验证用户输入是最重要的方面。默认情况下,基础控制器类使用 ValidatesRequests trait 提供的用各种强大的验证规则来验证进入的HTTP请求。

Laravel 中可用的验证规则


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

Laravel 中可用的验证规则
AcceptedActive URLAfter (Date)
AlphaAlpha DashAlpha Numeric
ArrayBefore (Date)Between
BooleanConfirmedDate
Date FormatDifferentDigits
Digits BetweenE-MailExists (Database)
Image (File)InInteger
IP AddressJSONMax
MIME Types(File)MinNot In
NumericRegular ExpressionRequired
Required IfRequired UnlessRequired With
Required With AllRequired WithoutRequired Without All 
SameSizeString
TimezoneUnique (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文件中:

<?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的视图文件,并将以下代码复制到该文件中。

<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: 修改application/config/routes.php文件,并在文件末尾添加以下配置:

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

步骤6: 访问以下网址测试验证:

http://localhost:8000/validation

步骤7: 点击“Login”按钮而无需在文本字段中输入任何内容,输出将如下图所示:

Login