Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程

8次阅读

laravel 提供灵活的 表单验证 机制,支持内置规则、闭包 自定义及可复用的规则类,推荐使用 Form Request 解耦控制器逻辑,还可通过 ServiceProvider 全局注册规则提升复用性。

Laravel 请求验证怎么写_Laravel Validator 自定义表单验证规则教程

在 Laravel 中,表单请求验证是确保用户输入数据合法的重要环节。Laravel 提供了强大的 Validator 机制,除了使用内置规则外,还可以轻松自定义验证规则。下面教你如何写 Laravel 请求验证,以及如何创建自定义表单验证规则。

使用内置 Validator 验证请求

在控制器中,你可以通过 validate() 方法或使用 Validator 门面来验证请求数据。

示例:在控制器方法中验证表单

use IlluminateSupportFacadesValidator;  public function store(Request $request) {$validator = Validator::make($request->all(), ['name' => 'required|string|max:255',         'email' => 'required|email|unique:users',         'password' => 'required|min:6|confirmed',     ]);      if ($validator->fails()) {return redirect()->back()             ->withErrors($validator)             ->withInput();}      // 验证通过,继续处理逻辑 }

创建 Form Request 类进行验证

更推荐的方式是使用 Form Request,它将验证逻辑从控制器中解耦。

生成请求类:

php artisan make:request StoreUserRequest

编辑生成的请求类:

class StoreUserRequest extends FormRequest {public function authorize()     {return true; // 控制是否授权该请求}      public function rules()     {         return [             'name' => 'required|string|max:255',             'email' => 'required|email|unique:users',             'password' => 'required|min:6|confirmed',];     } }

在控制器中使用:

public function store(StoreUserRequest $request) {// 数据已自动验证,直接使用     User::create($request->validated()); }

自定义验证规则(使用闭包)

如果内置规则不够用,可以在验证时使用闭包来自定义逻辑。

示例:验证用户名不能为特定值

$validator = Validator::make($data, [     'username' => [         'required',         function ($attribute, $value, $fail) {if (strtolower($value) === 'admin') {$fail('用户名不能为 admin。');             }         },     ], ]);

创建可复用的自定义验证规则

Laravel 允许你创建可复用的自定义规则类,适合复杂或多个地方使用的验证逻辑。

生成自定义规则:

php artisan make:rule ValidAgeRule

编辑规则类:

class ValidAgeRule implements Rule {public function passes($attribute, $value)     {return $value >= 18;}      public function message()     {         return '年龄必须满 18 岁。';} }

在验证中使用:

'age' => ['required', new ValidAgeRule],

注册全局自定义规则(可选)

你也可以通过 Validator 门面向全局注册自定义规则,方便在多处使用。

appServiceProvider 的 boot 方法中:

use IlluminateSupportFacadesValidator;  public function boot() {     Validator::extend('uppercase', function ($attribute, $value, $parameters, $validator) {return strtoupper($value) === $value;     });      Validator::replacer('uppercase', function ($message, $attribute, $rule, $parameters) {return str_replace(':attribute', $attribute, $message);     }); }

然后在规则中使用:

'name' => 'required|uppercase'

基本上就这些。Laravel 的验证系统灵活又强大,合理使用可以大幅提升开发效率和代码可维护性。自定义规则让复杂业务逻辑也能被清晰 封装

以上就是 Laravel 请求验证怎么写_Laravel Validator 自定义表单验证规则教程的详细内容,更多请关注 php 中文网其它相关文章!

站长
版权声明:本站原创文章,由 站长 2025-12-13发表,共计2112字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources