如何在 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.']); } }

输出

执行上述程序将生成以下输出


相关文章