关于验证根据字段值的不同,其字段的验证也不同的解决方法

1. 运行环境

1). 当前使用的 Laravel 版本?

laravel8
//: <> (使用 php artisan --version 命令查看)

2). 当前使用的 php/php-fpm 版本?

PHP 版本:
7.4
//: <> (使用 php --version 命令查看 php 版本)

php-fpm 版本:

3). 当前系统

4). 业务环境

5). 相关软件版本

2. 问题描述?

关于验证根据字段值的不同,其字段的验证也不同的解决方法
如图所示:type有5个值,其中三个值的验证方式相同,其他两个值的验证方式不同,也就是说一共有三种验证方式

3. 您期望得到的结果?

我想知道怎么写val的验证式
//: <> (能截图就截图。)

4. 您实际得到的结果?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1
随波逐流

可以使用 sometimes 来动态验证。

// 定义验证
$validator = Validator::make($request->all(), [
    'type' => ['required', 'in:int,date'],
]);

// 当type类型是int时
$validator->sometimes('val', ['required', 'min:1', 'max:100'], fn () => $request->input('type') === 'int');

// 当type类型是date时
$validator->sometimes('val', ['required', 'date'], fn () => $request->input('type') === 'date');

dd(
    $validator, // 可以访问 rules 生成的规则
    $validator->fails(), // 验证表单是否失败
    $validator->validated() // 获取验证结果
);
4个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!