Dcat Admin 表单字段设置默认值时,如果默认值是 null 就会报错后面再加上 required 时就会报错。

比如我们有个需求:如果在部门中创建员工,那么部门下拉框默认值是当前部门,否则显示默认的下拉框。写出的代码如下:

    protected function form()
    {
        return Form::make(new Job(), function (Form $form) {
            $form->display('id');
            $form->select('user_id')->options('api/users')->required();
            $form->select('position_id')->options('api/positions')->required();
            $form->select('level_id')->options('api/levels')->required();
            $form->select('department_id')->options('api/departments')->default(request()->input('department_id'))->required();
            $form->date('begin_date')->required();
            $form->date('end_date');

            $form->display('created_at');
            $form->display('updated_at');
        });
    }

这段代码在 request()->input('department_id')有值时可以正常运行,但是如果是 null 时,Dcat Admin 会报错,这是因为:在 Dcat Admin 中设置默认值的 default 方法不能设置为 null,否则就是获取了,解决办法也很简单,就是判断下参数是否是 null,如果是 null 转成空字符串就可以了:

$form->select('department_id')->options('api/departments')->default(request()->input('department_id')??'')->required();