Laravel 验证
在设计应用程序时,验证用户输入是最重要的方面。默认情况下,基础控制器类使用 ValidatesRequests trait 提供的用各种强大的验证规则来验证进入的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 | 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: 执行成功后,会得到如下输出:
步骤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”按钮而无需在文本字段中输入任何内容,输出将如下图所示: