laravel-admin 查询过滤时`load`默认选择,联动默认选择

注意

  • 1.这里是设置查询过滤的时候select-load方法的默认选中
  • -2.如果是在form页面(添加和修改页面)的select-load,请参考
问题

list页面查询过滤时,select-load二级选项并没有默认选择。暴力改了源码,实现默认选中功能

查询代码
 $grid->filter(function (Grid\Filter $filter){
     $filter->disableIdFilter();
     $filter->like('name','名称');
     $filter->equal('s_id','门店')->select('接口地址')
         ->load('gs_id', $this->getUrl('接口地址');
     $filter->equal('gs_id','商品分类')->select();
 });

改的源代码

通过getQueryVariable方法获取GET地址中的参数值,在通过Select2设置默认选中的方法设置默认选中$(target).val(getQueryVariable("{$this->getClass($target)}")).trigger('change');

namespace Encore\Admin\Grid\Filter\Presenter;

/**
     * Load options for other select when change.
     *
     * @param string $target
     * @param string $resourceUrl
     * @param string $idField
     * @param string $textField
     *
     * @return $this
     */
    public function load($target, $resourceUrl, $idField = 'id', $textField = 'text'): self
    {
        $column = $this->filter->getColumn();

        $script = <<<EOT
        
        // 获取url参数
        function getQueryVariable(variable)
        {
               var query = window.location.search.substring(1);
               var vars = query.split("&");
               for (var i=0;i<vars.length;i++) {
                       var pair = vars[i].split("=");
                       if(pair[0] == variable){return pair[1];}
               }
               return(false);
        }
        
$(document).off('change', ".{$this->getClass($column)}");
$(document).on('change', ".{$this->getClass($column)}", function () {
    var target = $(this).closest('form').find(".{$this->getClass($target)}");
    $.get("$resourceUrl",{q : this.value}, function (data) {
        target.find("option").remove();
        $.each(data, function (i, item) {
            $(target).append($('<option>', {
                value: item.$idField,
                text : item.$textField
            }));
        });
        
        // 默认选中设置
        var getQueryVariableval = getQueryVariable("{$this->getClass($target)}");
        if(getQueryVariableval !== false)
        {
            $(target).val(getQueryVariableval).trigger('change');
        }
        else
        {
            $(target).val(null).trigger('change');
        }
    });
});
EOT;

        Admin::script($script);

        return $this;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值