DcatAdmin框架的radio、select使用

1. 运行环境

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

Laravel Framework 9.52.16

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

PHP 版本:PHP 8.0.2 (cli)

php-fpm 版本:

3). 当前系统

Windows 10

4). 业务环境

开发环境

5). 相关软件版本

PHPStudy
//: <> (提供相关软件的版本,如 Nginx 、MySQL、MongoDB 等)

2. 问题描述?

$form->radio('status', '审核')->options([
                1 => '审核通过',
                2 => '驳回'
            ])->required()

            ->when(1, function (Form $form) {
                $form->select('car_id', '车辆选择')->options(function () {
                    $demo = new Car();
                    // 查询所有状态为可用的车辆
                    $availableCars = $demo->model()
                    ->where('status', 0)
                    ->get()
                    ->mapWithKeys(function ($car) {
                        return [$car->id => $car->id . ' - ' . $car->car_num];
                    })->toArray();
                    // 添加一个默认选项
                    return ['' => '请选择车辆'] + $availableCars;
                })->saving(function ($value) {
                    // 在保存表单时,更新选定车辆的状态为1
                    if (!empty($value)) {
                        $dcar = new Car();
                        $car = $dcar->model()
                        ->where('id', $value)
                        ->first();
                        if ($car) {
                            $car->status = 1;
                            $car->save();
                        }
                    }
                    return $value;
                });
            })

3. 您期望得到的结果?

Laravel

Laravel

如图,有一个radio(审核)
我希望在选择审核通过时将下面的select(车辆选择)设置为required,在选择驳回时,则不需要选择
然而我写的这段代码在选择驳回时,无法提交,(应该是两个when都发挥作用了,导致select还是required)希望大佬们能帮我修改一下代码

4. 您实际得到的结果?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

可以在表单响应的saving中整体验证表单并返回报错
文档传送

8个月前 评论
JamesBUG (楼主) 8个月前
working (作者) 8个月前
JamesBUG (楼主) 8个月前
working (作者) 8个月前
讨论数量: 8

给 车辆选择select 加一个rule,这个是后端验证,你说的required是前端验证,这里不能动态实现

$form->radio('status', '审核')->options([
                1 => '审核通过',
                2 => '驳回'
            ])->required()

            ->when(1, function (Form $form) {
                $form->select('car_id', '车辆选择')->options(function () {
                    $demo = new Car();
                    // 查询所有状态为可用的车辆
                    $availableCars = $demo->model()
                    ->where('status', 0)
                    ->get()
                    ->mapWithKeys(function ($car) {
                        return [$car->id => $car->id . ' - ' . $car->car_num];
                    })->toArray();
                    // 添加一个默认选项
                    return ['' => '请选择车辆'] + $availableCars;
                })->rules('required_if:status,1')
                ->saving(function ($value) {
                    // 在保存表单时,更新选定车辆的状态为1
                    if (!empty($value)) {
                        $dcar = new Car();
                        $car = $dcar->model()
                        ->where('id', $value)
                        ->first();
                        if ($car) {
                            $car->status = 1;
                            $car->save();
                        }
                    }
                    return $value;
                });
            })
8个月前 评论
JamesBUG (楼主) 8个月前
JamesBUG (楼主) 8个月前

可以在表单响应的saving中整体验证表单并返回报错
文档传送

8个月前 评论
JamesBUG (楼主) 8个月前
working (作者) 8个月前
JamesBUG (楼主) 8个月前
working (作者) 8个月前

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