Laravel-admin: Form在创建和编辑时控件的状态变化实现

Created on 20 Dec 2017  ·  11Comments  ·  Source: z-song/laravel-admin

  • Laravel Version: 5.4
  • PHP Version:
  • Laravel-admin: 1.4

Description:

当我创建了一行记录,全部由人工输入的。当我更新该记录时,我想让其中一个字段设置为readonly,使其无法修改。在controller中,我该如何写form方法?

Steps To Reproduce:

$form->text('sku_code','sku编码')->rules('required|max:20');//创建时自行输入,更新时可改变其他值,此字段readonly

Most helpful comment

request()->route()->getActionMethod(),我后来是通过判断方法来改变的,不知道还有没有更好的方法

All 11 comments

加判断逻辑:

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));
Was this page helpful?
0 / 5 - 0 ratings

Related issues

zhenyangze picture zhenyangze  ·  3Comments

vlongen picture vlongen  ·  3Comments

greentornado picture greentornado  ·  3Comments

wangwenfan picture wangwenfan  ·  3Comments

antranapp picture antranapp  ·  3Comments