码一下使用laravel-admin遇到的坑

本文详细介绍了在使用laravel-admin时遇到的问题,包括联动选择框在编辑时二级选项未自动选中,以及如何在控制器中获取路由参数。针对联动选择框,解决方法是在Select字段中添加selected属性;对于自定义删除,文章讨论了laravel-admin的两种删除方式,并提供了如何避免多余提示框和重写delete方法的建议。

联动选择框

当编辑时第二级联动无法自动被选择

找到vendor\encore\laravel-admin\src\Form\Field 写的 Select 文件

  $script = <<<EOT
$(document).off('change', "{$this->getElementClassSelector()}");
$(document).on('change', "{$this->getElementClassSelector()}", function () {
    var target = $(this).closest('.fields-group').find(".$class");
    $.get("$sourceUrl",{q : this.value}, function (data) {
        target.find("option").remove();
        $(target).select2({
            placeholder: $placeholder,
            allowClear: $strAllowClear,
            data: $.map(data, function (d) {
                d.id = d.$idField;
                d.text = d.$textField;
                return d;
            })
        }).trigger('change');
    });
});

$('{$this->getElementClassSelector()}').trigger('change');  //添加上这一句
EOT;

在接口中返回的数据中添加 selected => true 多选也是同理

public function getOption(Request $request){
       $option = [
       ['id'=>1,'text'=>'测试1'],
       ['id'=>2,'text'=>'测试2','selected'=>true]
       ];
        return $option ;
    }

在控制器中获取路由上的参数

request()->route()->parameters()

自定义删除

laravel-admin删除有两种方式 按钮 和 列表的删除方式不同 使用按钮时直接在控制器中重写destroy即可,但会弹出多个提示框 将vendor\encore\laravel-admin\src下得Tree中 多余的弹框删除

 toastr.success('{$trans['delete_succeeded']}');  //注释掉

使用列表的方式删除 若要重写 则要到模型中重写delete方法错误提示的方式采用抛出异常的方式

 public function delete()
    {
        if (ModelsUnit::where('models_id',$this->id)->exists() || ModelsLevel::where('models_id',$this->id)->exists()) {
            throw new \Exception('XXX');
        }

        parent::delete();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值