无需安装依赖包 基于布尔值切换控制字段显示的实现方法
布尔字段联动显示文本字段实现方案
完全可以通过框架原生能力监听字段变化完成条件渲染,无需安装任何第三方依赖,以下是具体实现方法:
最终修改代码
Boolean::make('Blocked', 'isBlocked') ->hideFromIndex(), Textarea::make('Reason', 'blockedReason') // 监听isBlocked字段的数值变化 ->dependsOn('isBlocked') // 仅当isBlocked为true时显示当前输入框 ->showIf(fn () => $this->isBlocked) ->withMeta([ 'extraAttributes' => [ 'placeholder' => '填写内容不要超过255个字符', ] ]) // 条件设置校验规则:isBlocked为true时必填,否则可为空 ->rules(fn ($request) => $request->isBlocked ? ['required', 'max:255'] : ['nullable', 'max:255']) ->rows(3) ->hideFromIndex(),
实现逻辑说明
dependsOn是框架原生提供的字段联动方法,传入需要监听的字段名后,当前字段会自动同步监听字段的数值变更showIf方法接收一个闭包作为判断条件,闭包返回true时显示当前字段,返回false时自动隐藏- 条件校验规则是为了避免字段隐藏时仍然触发必填校验,导致表单提交失败
如果使用的是不支持dependsOn的旧版本,可通过给两个字段加自定义标识,再在后台页面注入少量自定义JS监听布尔值变化控制文本框显隐,也不需要引入第三方依赖。
内容的提问来源于stack exchange,提问作者sirATL
相关产品推荐
相关产品推荐

