0

0

Laravel表单验证怎么做_Laravel Request验证规则详解

穿越時空

穿越時空

发布时间:2025-11-26 11:31:02

|

644人浏览过

|

来源于php中文网

原创

Laravel表单验证可通过控制器的validate方法或FormRequest类实现,推荐使用FormRequest处理复杂表单。1. 控制器中用$request->validate()传入规则和自定义消息,失败自动重定向并返回错误;2. FormRequest类通过artisan命令生成,可定义rules、authorize及messages方法,使验证逻辑独立;3. 常用规则包括required、string、email、integer、max/min、confirmed、unique、exists、image、mimes、array、date、before/after、regex等,支持字段组合验证如数组元素'*';4. 可通过Validator::extend或创建Rule类实现自定义规则,如手机号格式校验。合理使用验证机制提升代码可维护性。

laravel表单验证怎么做_laravel request验证规则详解

Laravel 的表单验证功能强大且易于使用,主要通过 FormRequest 或在控制器中直接使用 $request->validate() 方法实现。它能有效确保用户提交的数据符合预期格式,提升应用的安全性和稳定性。下面详细介绍 Laravel 表单验证的常用方式和规则。

1. 控制器内直接验证

在控制器方法中,可以直接调用 validate() 方法对请求数据进行验证,适合简单的验证场景。

  • 使用 $request->validate($rules, $messages),传入规则数组和可选的自定义提示信息。
  • 如果验证失败,Laravel 会自动重定向回上一页,并将错误信息存入 session

示例:

public function store(Request $request)
{
    $validated = $request->validate([
        'title' => 'required|string|max:255',
        'body'  => 'required',
        'email' => 'required|email',
        'age'   => 'nullable|integer|min:18'
    ], [
        'title.required' => '标题不能为空',
        'email.email'    => '请输入有效的邮箱地址'
    ]);

    // 验证通过后执行保存逻辑
}

2. 使用 FormRequest 类(推荐)

对于复杂的表单,建议创建专门的 FormRequest 类,将验证逻辑独立出来,使控制器更简洁。

  • 使用命令生成:php artisan make:request StorePostRequest
  • 在生成的类中定义 rules()authorize() 方法。
  • 还可重写 messages() 方法来自定义错误提示。

示例:

// app/Http/Requests/StorePostRequest.php
class StorePostRequest extends FormRequest
{
    public function authorize()
    {
        return true; // 控制是否授权当前用户执行此请求
    }

    public function rules()
    {
        return [
            'title' => 'required|string|max:255',
            'body'  => 'required|min:10',
            'cover' => 'nullable|image|mimes:jpg,png,jpeg,gif|max:2048',
        ];
    }

    public function messages()
    {
        return [
            'title.required' => '文章标题是必填的',
            'body.min'       => '正文内容不能少于10个字符',
            'cover.image'    => '封面必须是一张图片',
        ];
    }
}

在控制器中使用:

Open Voice OS
Open Voice OS

OpenVoiceOS是一个社区驱动的开源语音AI平台

下载
public function store(StorePostRequest $request)
{
    // 数据已自动验证通过
    $data = $request->validated();
    // 执行保存...
}

3. 常用验证规则说明

Laravel 提供了丰富的内置验证规则,以下是一些最常用的:

  • required:字段必须存在且不为空(null、空字符串、空数组除外)
  • string:必须是字符串
  • email:必须是合法邮箱格式
  • numeric / integer:数字或整数
  • max:value / min:value:最大/最小长度或数值
  • confirmed:需有对应字段名 + _confirmation,如 password 和 password_confirmation
  • unique:table,column:数据库中唯一,例如 unique:users,email
  • exists:table,column:值必须存在于指定数据库字段中
  • image:上传文件必须是图像
  • mimes:jpg,png:文件 MIME 类型限制
  • array:必须是数组
  • date:必须是有效日期
  • after:date / before:date:日期前后比较
  • regex:pattern:匹配正则表达式
  • nullable:允许字段为 null

组合示例:

'price'         => 'required|numeric|min:0',
'category_id'   => 'required|exists:categories,id',
'tags'          => 'array',
'tags.*'        => 'string|max:50', // 数组中每个元素验证
'avatar'        => 'nullable|image|max:1024',
'password'      => 'required|confirmed|min:8',
'start_date'    => 'required|date|before:end_date',

4. 自定义验证规则(高级用法)

当内置规则不够用时,可以注册自定义规则。

  • 使用 Validator::extend() 在服务提供者中注册。
  • 或创建 PHP 类实现 Illuminate\Contracts\Validation\Rule 接口。

示例:创建手机号验证规则

// 创建规则类
php artisan make:rule PhoneRule

// 实现 passes() 和 message()
public function passes($attribute, $value)
{
    return preg_match('/^1[3-9]\d{9}$/', $value);
}

public function message()
{
    return '请输入有效的中国大陆手机号码';
}

在验证中使用:

'phone' => ['required', new PhoneRule]
基本上就这些。Laravel 的验证机制灵活且清晰,合理使用 FormRequest 可以让代码结构更清晰,维护更方便。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2533

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1604

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1498

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

952

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1416

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1234

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1445

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

6

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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