排序功能的实现

1、先在HTML中添加排序的标签,并且给一个输入框,再写一个“更新”的button

标签

 <th width="14">排序<i class="fa fa-sort"></i></th>

输入框

 <td><input size="4" type="text" name="listorder[{$menu.menu_id}]" value="{$menu.listorder}"></td>

更新的button

<div>
    <a href="#" style="display: block"><button  id="button_listorder" type="button" class="btn btn-primary dropdown-toggle">更新排序</button></a>
</div>

2、通过common.js来触发按钮

/**
 * 排序操作
 */

$('#button_listorder').click(function() {    //触发button中的id

    // 点击“更新”按钮之后会获取表单中的 listorder内容,也就是 $("#singcms-listorder").serializeArray();这个值
    var data = $("#singcms-listorder").serializeArray();
    postData = {};
    $(data).each(function(i){
        postData[this.name] = this.value;  //把这个值放入数组
    });
    console.log(postData);
    var url = SCOPE.listorder_url;  //把postData抛送给URL地址,先定去index文件定义地址(  'listorder_url' : '/admin.php?c=menu&a=listorder')
    $.post(url,postData,function(result){
        if(result.status == 1) {
            //成功
            return dialog.success(result.message,result['data']['jump_url']);
        }else if(result.status == 0) {
            // 失败
            return dialog.error(result.message,result['data']['jump_url']);
        }
    },"JSON");
});






定义URL地址的HTML代码

   var SCOPE = { 'listorder_url' : '/admin.php?c=menu&a=listorder'
        }

3、然后再控制器menuController新建一个方法

public function listorder()
{
    $listorder = $_POST['listorder'];   //把$listorder赋值给前端的变量
    $jumpurl = $_SERVER['HTTP_REFERER'];  //定义一个跳转的URL地址
    $errors = array();
    if ($listorder) {
        try {   //  try{} catch{}  处理异常问题
            foreach ($listorder as $menuId => $v) {  //foreach对$listorder进行循环
                // 执行更新 与数据库打交道,所以要到commom/model写一个方法
                $id = D("Menu")->updateMenuListorderById($menuId, $v);  //   然后通过D直接调用model层定义的方法
                if ($id === false) {
                    $errors[] = $menuId;
                }
            }
        }catch(Exception $e) {
            return show(0,$e->getMessage(),array('jump_url'=>$jumpurl));   //处理异常问题之后给出一个提示
        }
        if($errors) {   //排序之后会带一个跳转地址
            return show(0,'排序失败-'.implode(',',$errors),array('jump_url'=>$jumpurl));
        }
        return show(1,'排序成功',array('jump_url'=>$jumpurl));
    }
    return show(0,'排序数据失败',array('jump_url'=>$jumpurl));
}







上面提到  “ 执行更新 与数据库打交道,所以要到commom/model写一个方法   ”    model方法如下

    public function updateMenuListorderById($id,$listorder){
          if(!$id||!is_numeric($id)){     //如果没有id或者id值不是一个数字,则抛出异常
              throw_exception('ID不合法');
          }
          $data = array(
             'listorder'=>intval($listorder),
          );
          return $this->_db->where('menu_id='.$id)->save($data);
      }




 

最后为了实现排序还需在之前写好的 model层 的public   function  getMenus()方法中加一个 “  listorder  desc    ”

 public function getMenus($data,$page,$pageSize=10){
        $data["status"] = array('neq',-1);
        $offset = ($page - 1) * $pageSize;
       $list = $this->_db->where($data)->order('listorder desc','menu_id desc')->limit($offset,$pageSize)->select();
        return $list;





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值