Laravel 验证
在设计应用程序时,验证是最重要的方面。它验证传入的数据。默认情况下,基础控制器类使用 ValidatesRequests trait,它提供了一种方便的方法来使用各种强大的验证规则验证传入的HTTP请求。
Laravel 中可用的验证规则
Laravel将始终检查会话数据中的错误,并在视图中自动绑定这些错误(如果可用)。因此,重要的是要注意,在每个请求中,所有视图中都将始终可用一个 $errors 变量,使您可以方便地假设 $errors 变量始终已定义并且可以安全地使用。下表显示了Laravel中所有可用的验证规则。
Available Validation Rules in 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 文件中。
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 - 点击 “登录” 按钮,不输入任何内容。输出结果如下图所示。