fastadmin小知识

记录工作中遇到的各种关于fastadmin的知识点,进行记录

1、图片上传修改原设置是随机名称,现改为图片原名

在application/extra/upload.php中修改savekey的值

'savekey'   => '/uploads/{year}{mon}{day}/{filename}',

2、在列表字段,添加类似(价格)上下箭头,点击排序

在对应的js文件中,添加sortable:true

{field: 'sum', title: __('Sum'),sortable:true},

3、添加按纽弹框,添加完后不关闭,可以继续添加(需要点击重置)

在对应的js文件,修改add方法

add: function () {
    // Controller.api.bindevent();
    Form.api.bindevent($("form"), function(data,ret){
        //成功的回调,如果返回false,将不会出现提示消息
        Toastr.success("提交成功");
        return false;//这行代码阻止弹框关闭
    }, function(data, ret){
        //失败的回调,如果返回false,将不会出现提示消息
    }, function(success, error){
        //如果返回falsle,将阻止表单的提交
        //如果处理成功后我们可以使用Form.api.submit(this, success, error);再次提交表单
    });
},

4、fastadmin创建一个父级菜单,把其它子菜单放进去

在权限管理-菜单规则中添加,父级选择对应的项目,规则随意填写,确定添加后,对应的项目会多出一个菜单项(点击会出错,要把要调整的菜单放到这个父菜单才行)

也是选择权限管理-菜单规则,把要调整的菜单栏进行编辑,调整父级到上面添加的菜单项即可

5、操作栏添加自定义按纽,调用后台方法,返回刷新

在对应的index.html中,添加

<a href="javascript:;" class="btn btn-success btn-process-1"  title="重置" ><i class="fa fa-pencil"></i>重置</a>

在对应的js文件Table.api.bindevent(table);下面添加代码

//重置
$(".btn-process-1").click(function(){
    var ids = Table.api.selectedids(table);
    layer.confirm('确定要重置所有考生查询信息吗?', {btn: ['是','否'] },
        function(index){
            layer.close(index);
            $.post("zkxx/user/reset", {ids:ids , action:'success', reply:''},function(response){
                // alert(response.code);
                if(response.code == 200){
                    Toastr.success('重置成功')
                    $(".btn-refresh").trigger('click');
                }else{
                    Toastr.error('重置失败,请联系管理员')
                }
            }, 'json')
        },
        function(index){
            layer.close(index);
        }
    );
});

在对应的controll中添加reset方法

public function reset(){
    $res['code'] = 200;
    return json($res);
}

6、fastadmin   子用户switch开关权限

在对应的controll后台控制器里面添加   

protected $multiFields = 'showswitch';

7、修改status状态,对不同的状态可以进行js处理

在对应的view-edit.html中,添加c-id字段

<div class="form-group">
    <label class="control-label col-xs-12 col-sm-2">{:__('Id')}:</label>
    <div class="col-xs-12 col-sm-8">
        <input id="c-id" class="form-control" name="row[id]" type="number" value="{$row.id|htmlentities}" disabled>
    </div>
</div>

在对应的js文件中,修改api方法

api: {
    bindevent: function () {
        //Form.api.bindevent($("form[role=form]"));
        Form.api.bindevent($("form[role=form]"), function(data, ret){
            //如果我们需要在提交表单成功后做跳转,可以在此使用location.href="链接";进行跳转
            Toastr.success("成功");
        }, function(data, ret){
            Toastr.success("失败");
        }, function(success, error){
            //bindevent的第三个参数为提交前的回调
            //如果我们需要在表单提交前做一些数据处理,则可以在此方法处理
            //注意如果我们需要阻止表单,可以在此使用return false;即可
            //如果我们处理完成需要再次提交表单则可以使用submit提交,如下
            //Form.api.submit(this, success, error);
            var status = $("input[name='row[status]']:checked").val();
            var that = this;
            //已结束状态
            if(status==2){
                var id = $("#c-id").val();
                Fast.api.ajax({
                    url:'back/changeKecxOrder',
                    data:{id:id}
                }, function(data){
                    //成功的回调-再次提交表单
                    Form.api.submit(that, success, error);
                }, function(data){
                    //失败的回调
                    return false;
                });
                return false;
            }
        });
    }
}

在上面设定的类back中,添加自定义的方法changeKecxOrder

public function changeKecxOrder(){
    $id = $_POST['id'];
    $orderData = KecxOrderModel::where('id',$id)->find();
    $integral = round($orderData['total']/100);
    KecxUserModel::where('id',$orderData['userId'])->inc('total',$orderData['total'])->setInc('integral',$integral);

    $this->success('', null,null);
}

8、根据status状态,设置不可编辑

在对应的controll中,重写edit方法,进行状态判断

/**
 * 编辑
 */
public function edit($ids = null)
{
    $row = $this->model->get($ids);
    if($row['status']==2 || $row['status'] == 3){
        $this->error(__('该状态不可编辑'));
    }else{
        //正常编辑
     }

}

9、二级联动,选第一级时,二级选项自动匹配(可参考淘机回收报价,两个分类进行了关联模型)

主要就是修改js文件的add和edit方法

c-sjhl_type_id = 2级选项类名

c-sjhl_logo_id=1级选项类名

sjhl_logo_id=1级选项id

  add: function () {       

        $("#c-sjhl_type_id").data("params", function(){

         return {custom: {sjhl_logo_id: $("#c-sjhl_logo_id").val()}};

});
  Controller.api.bindevent();

        },
        edit: function () {
                 $("#c-sjhl_type_id").data("params", function(){

                 return {custom: {sjhl_logo_id: $("#c-sjhl_logo_id").val()}};

});
         Controller.api.bindevent();
 },

10、把查询框修改为自定义ID范围查询,例1-100

在对应的controll中,重写index方法,注意红色字段

 /**
     * 查看
     */
    public function index()
    {
        //设置过滤方法
        $this->request->filter(['strip_tags', 'trim']);
        if ($this->request->isAjax()) {
            //如果发送的来源是Selectpage,则转发到Selectpage
            if ($this->request->request('keyField')) {
                return $this->selectpage();
            }
            list($where, $sort, $order, $offset, $limit) = $this->buildparams();

           //获取查询的值,默认ID,例:1-100
            $search = $this->request->get("search", '');
            if($search){
                //1-100,分割字符串为数组
                $arr = explode('-',$search);
                //自定义获取ID字段,方便导出
                $where1['id'] = array('and');
                array_unshift($where1['id'], array('egt', $arr[0]));
                array_unshift($where1['id'], array('elt', $arr[1]));

            }else{
                $where1['id'] = array('egt', 1);
            }

            $list = $this->model
//把原来的查询条件去除     ->where($where)
                ->where($where1)//新的查询条件
                ->order($sort, $order)
                ->paginate($limit);

            $result = array("total" => $list->total(), "rows" => $list->items());

            return json($result);
        }
        return $this->view->fetch();
    }

11、fastadmin导出的excel图片统一大小

代码位置:放在数据表单后面即可,在js的第二个 ] 后面

// 导出图片过大处理
exportOptions: {
    ignoreColumn: [0, 'operate'],
    onBeforeSaveToFile: function (data, fileName, type, charset, encoding, bom) {
        return $.fn.bootstrapTable.defaults.extend.savestatus;
    },
    onCellHtmlHyperlink: function ($cell, rowIndex, colIndex, href, htmlData) {
        var html = $.parseHTML(htmlData);
        var inputidx = 0;
        var selectidx = 0;
        var result = '';
 
        $.each(html, function () {
            if ($(this).is("input")) {
                result += $cell.find('input').eq(inputidx++).val();
            } else if ($(this).is("select")) {
                result += $cell.find('select option:selected').eq(selectidx++).text();
            } else if ($(this).is("img")) {
                var src = $(this).attr('src');
                if (src.indexOf('http') === -1) {
                    $(this).attr('src', window.location.origin + src);
                }
                $(this).attr("width", "40").attr("height", "40").attr('class', '');
                result += '<div>' + $(this).get(0).outerHTML + '</div>';
            } else {
                if (typeof $(this).html() === 'undefined') {
                    result += $(this).text();
                } else if (jQuery().bootstrapTable === undefined ||
                    ($(this).hasClass('filterControl') !== true &&
                        $cell.parents('.detail-view').length === 0)) {
                    result += $(this).html();
                }
            }
        });
        return result;
    }
}

12、fastadmin不用CRUD添加一个字段

1、在数据库表中添加新字段

2、修改lang里面的zh-cn文件里的对应表的.php,把新增字段对应关系加进去

13、fastadmin中的订单商户号(Mch_id)在编辑的时候显示加载出错,显示不正常的问题

因为_id这种格式,在fastadmin中属于特定后辍指向别的表,所以加载有问题,修改方法有2种

1、是把字段名修改不用_id

2、在对应的view中的edit.php,把下面标红值去除

<div class="form-group">
    <label class="control-label col-xs-12 col-sm-2">{:__('Mch_id')}:</label>
    <div class="col-xs-12 col-sm-8">
        <input id="c-mch_id" data-rule="required" data-source="mch/index" class="form-control selectpage" name="row[mch_id]" type="text" value="{$row.mch_id|htmlentities}">
    </div>
</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值