如何在 Laravel 中使用验证?
laravelphpserver side programming更新于 2025/7/4 7:07:17
验证来自 HTML 表单的数据非常重要。 Laravel 提供了 validate() 方法,您可以使用该方法按照自己的方式定义输入字段的规则。
以下示例展示了 validate() 的工作原理以及如何在 HTML 表单输入字段中使用它。
要测试验证,请按如下所示创建控制器 -
php artisan make:controller testvalidationController
完成后,您将获得以下输出 -
C:\xampp\htdocs\laraveltest>php artisan make:controller testvalidationController Controller created successfully. C:\xampp\htdocs\laraveltest>
打开控制器"testvalidationController",并为包含用户名和密码的表单添加验证规则。表单验证规则定义如下:-
$this->validate($request,[
'username'=>'required|max:8',
'password'=>'required'
]);
如果您遵循上述条件,由于字段 username 和 password 为必填字段,这意味着输入字段 username 和 password 是必填的。用户名字段有一个附加的 [max:8]条件,这意味着允许的最大字符数为 8。如果违反上述任何条件,验证将失败。
示例
以下示例展示了使用包含用户名和密码的 HTML 表单进行验证的工作原理。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class testvalidationController 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' ); } }
在 resources/views/ 中创建一个名为"login.blade.php"的 HTML 文件,如下所示
<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>
在 routes/web.php 中添加以下代码行。
routes/web.php
use App\Http\Controllers\testvalidationController;
Route::get('/validation',[testvalidationController::class, 'showform']);
Route::post('/validation',[testvalidationController::class, 'validateform']);
访问以下网址测试验证。
http://localhost:8000/validation
访问该网址并点击登录按钮后,您将看到验证执行,由于用户名和密码是必填字段,因此会向用户显示相同的内容。

显示错误消息
使用以下代码在 HTML 中显示验证错误。$errors 将包含有关错误的所有详细信息,并可向用户显示,如下所示
@if (count($errors) > 0) <div class = "alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif
显示自定义错误消息
您可以添加您选择的自定义消息,如下所示 -
$this->validate($request,[ 'username'=>'required|max:8', 'password'=>'required', ], ['username.required' => 'The username field cannot be blank value.']);
示例
下面是一个例子,演示如何显示自定义错误。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class testvalidationController extends Controller { public function showform() { return view('login'); } public function validateform(Request $request) { $this->validate($request,[ 'username'=>'required|max:8', 'password'=>'required', ], ['username.required' => 'The username field cannot be blank value.']); } }
输出
执行上述程序将生成以下输出

