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

呼延震博
2023-12-01

联动选择框

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

找到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();
    }

 类似资料: