首页 > php框架 > Laravel > 正文

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

冰火之心
发布: 2025-12-13 09:07:20
原创
477人浏览过
Laravel 提供灵活的表单验证机制,支持内置规则、闭包自定义及可复用的规则类,推荐使用 Form Request 解耦控制器逻辑,还可通过 ServiceProvider 全局注册规则提升复用性。

laravel请求验证怎么写_laravel validator自定义表单验证规则教程

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

使用内置 Validator 验证请求

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

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

use Illuminate\Support\Facades\Validator;

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 允许你创建可复用的自定义规则类,适合复杂或多个地方使用的验证逻辑。

MedPeer科研绘图
MedPeer科研绘图

生物医学领域的专业绘图解决方案,告别复杂绘图,专注科研创新

MedPeer科研绘图 166
查看详情 MedPeer科研绘图
生成自定义规则:

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 Illuminate\Support\Facades\Validator;

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中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号