当我创建了一行记录,全部由人工输入的。当我更新该记录时,我想让其中一个字段设置为readonly,使其无法修改。在controller中,我该如何写form方法?
$form->text('sku_code','sku编码')->rules('required|max:20');//创建时自行输入,更新时可改变其他值,此字段readonly
加判断逻辑:
if (是编辑状态) {
$form->text('sku_name','sku名称')->rules('required|max:100')->readOnly();
} else {
$form->text('sku_name','sku名称')->rules('required|max:100');
}
至于编辑状态怎么判断,你能想到的
至于编辑状态怎么判断,请版主明示吧。这个类 Encore\Admin\Form\Builder 里面的 mode 好像不行。
request()->route()->getActionMethod(),我后来是通过判断方法来改变的,不知道还有没有更好的方法
if(strpos(url()->current(), '/edit') !== false)
@imekkk 你的方法很好,谢谢!
加了逻辑判断后,rules验证有问题,相同字段的两个验证都执行
楼上 解决了么、 我也是加了逻辑判断 rules 验证有问题、 edit、跟add 都做了 验证
我也遇到了这个问题,验证不通过
我是吧创建放在上边,更新放在下边,这样好像能规避多重验证
if(empty($id)){创建} else {更新}
readOnly在select, number使用时都无效,依然可编辑
if (是编辑状态) {
$form->text('sku_name','sku名称')->rules('required|max:100')->readOnly();
} else {
$form->text('sku_name','sku名称')->rules('required|max:100');
}
@z-song 这个代码太冗余了,建议readOnly支持参数:
$form->text('sku_name','sku名称')->rules('required|max:100')->readOnly(boolval($id));
Most helpful comment
request()->route()->getActionMethod(),我后来是通过判断方法来改变的,不知道还有没有更好的方法