当前位置:首页 > CMS教程 > 其它CMS > 列表

Yii框架引入coreseek分页功能示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-06 21:22:43 浏览: 评论:0 

这篇文章主要介绍了Yii框架引入coreseek分页功能,结合实例形式分析了Yii框架结合coreseek搜索进行分页的相关操作技巧,需要的朋友可以参考下。

本文实例讲述了Yii框架引入coreseek分页功能,分享给大家供大家参考,具体如下:

把sphinxapi.php改为SphinxClient.php 类文件随便放,你能找到就行,我放在advanced/frontend/web/SphinxClient.php,打开common/config/bootstrap.php

在里面添加:

Yii::$classMap['SphinxClient']='@frontend/web/SphinxClient.php';

地址写正确

在需要用得控制其中 use SphinxClient

controller控制器

  1. /** 
  2.  * 话题搜索 
  3.  * 
  4.  * @author YING 
  5.  * @param void 
  6.  * @return void 
  7.  */ 
  8. public function actionTopic() 
  9.   //模拟数据 
  10.   $studId=2; //用户id 
  11.   $classId=2; //班级id 
  12.   $title=""//为空 
  13.   //实例化模型 
  14.   $studTopic=new StudTopic(); 
  15.   //查询 
  16.   $data=$studTopic->find()->select('*')->innerJoin('stud_user','stud_topic.stud_id=stud_user.stud_id')->where(['class_id'=>$classId]); 
  17.   //实例化分页类 
  18.   $pagination=new Pagination(['totalCount' => $data->count()]); 
  19.   //每页条数 
  20.   $pagination->setPageSize(3); 
  21.   //执行分页 
  22.   $topicInfo$data->offset($pagination->offset)->limit($pagination->limit)->asArray()->all(); 
  23.   //返回值 
  24.   return $this->render('topicList',['topicInfo'=>$topicInfo,'pages'=>$pagination,'studId'=>$studId,'classId'=>$classId,'title'=>$title]); 
  25. /** 
  26.  * coreseek搜索 
  27.  * 
  28.  * @author YING 
  29.  * @param void 
  30.  * @return void 
  31.  */ 
  32. public function actionSearchTitle() 
  33.   //接值 
  34.   $title=Yii::$app->request->get('t_title'); 
  35.   $classId=Yii::$app->request->get('class_id'); 
  36.   //模拟数据 
  37.   $studId=2; //用户id 
  38.   //coreseek 搜索 
  39.   $cl = new SphinxClient (); 
  40.   $cl->SetServer ( '127.0.0.1', 9312); 
  41.   $cl->SetConnectTimeout ( 3 ); 
  42.   $cl->SetArrayResult ( true ); 
  43.   $cl->SetMatchMode ( SPH_MATCH_ANY); 
  44.   $res = $cl->Query ( $title"*" ); 
  45.   //如果存在值 
  46.   if($res['total']){ 
  47.     $matches=$res['matches']; 
  48.     foreach($matches as $key => $val){ 
  49.      $tidArray[]=$val['id']; 
  50.     } 
  51.   } 
  52.   //转化为字符串 
  53.   $tidStr=isset($tidArray) ? implode(',',$tidArray) : 0; 
  54.   //实例化模型 
  55.   $studTopic=new StudTopic(); 
  56.   //查询 
  57.   $data=$studTopic->find()->select('*')->innerJoin('stud_user','stud_topic.stud_id=stud_user.stud_id')->where("t_id in ($tidStr)"); 
  58.   //实例化分页类 
  59.   $pagination=new Pagination(['totalCount' => $data->count()]); 
  60.   //每页条数 
  61.   $pagination->setPageSize(3); 
  62.   //执行分页 
  63.   $topicInfo$data->offset($pagination->offset)->limit($pagination->limit)->asArray()->all(); 
  64.   //加载模板 
  65.   return $this->render('topicList',['topicInfo'=>$topicInfo,'pages'=>$pagination,'studId'=>$studId,'classId'=>$classId,'title'=>$title]); 

view视图

  1. <?php 
  2. use yii\widgets\ActiveForm; 
  3. use yii\helpers\Html; 
  4. use yii\helpers\Url; 
  5. use yii\widgets\LinkPager; 
  6. ?> 
  7. <table class="table"
  8.   <tr> 
  9.     <td>标题</td> 
  10.     <td>作者</td> 
  11.     <td>发布时间</td> 
  12.     <td>操作</td> 
  13.   </tr> 
  14.   <?php foreach($topicInfo as $key => $val): ?> 
  15.     <tr id="tr_<?= $val['t_id']?>"
  16.       <td><input type="checkbox" tid="<?= $val['t_id']?>"/> <?= $val['t_title']?></td> 
  17.       <td><?= $val['stud_name']?></td> 
  18.       <td><?= date('Y-m-d H:i:s',$val['add_time'])?></td> 
  19.       <?php if($val['stud_id']==$studId):?> 
  20.       <td><a href="index.php?r=student/update-topic&topic_id=<?= $val['t_id']?>" rel="external nofollow" >编辑</a>||<a href="">删除</a></td> 
  21.       <?php else: ?> 
  22.       <td><a href="">删除</a></td> 
  23.       <?php endif; ?> 
  24.     </tr> 
  25.   <?php endforeach; ?> 
  26.   <tr> 
  27.     <td><input type="button" value="全选/全不选" id="all"/></td> 
  28.     <td><input type="button" value="反选" id="fan"/></td> 
  29.     <td><input type="button" value="批删" id="del"/></td> 
  30.   </tr> 
  31. </table> 
  32. <?php 
  33. echo LinkPager::widget([ 
  34.   'pagination' => $pages
  35. ]); 
  36. ?> 
  37. <script src="./css/js/jquery.1.12.min.js"></script> 
  38. <script> 
  39.   //全选/全不选 
  40.    var temp=true; //临时变量 
  41.   $('#all').click(function(){ 
  42.     $('input[type="checkbox"]').prop('checked',temp); 
  43.     //取反 
  44.     temp=!temp; 
  45.   }) 
  46.   //批删 
  47.   $('#del').click(function(){ 
  48.     var checkAll=$('input[type="checkbox"]'); //获取全部的复选框 
  49.     var length=checkAll.length; //计算长度 
  50.     var arr=new Array(); //定义数组 
  51.     var str=""//定义字符串 
  52.     //循环 
  53.     $.each(checkAll,function(k,v){ 
  54.       //判断是否选中 
  55.       if(checkAll[k].checked){ 
  56.         arr.push(checkAll.eq(k).attr('tid')); 
  57.       } 
  58.     }) 
  59.     //转化为字符串 
  60.     str=arr.join(','); 
  61.     //ajax 
  62.     var url="index.php?r=student/delete-all"//地址 
  63.     $.get(url,{str:str},function(msg){ 
  64.       if(msg){ 
  65.         //window.location.reload(); //刷新页面 
  66.         //节点删除 
  67.         $.each(arr,function(k,v){ 
  68.           $('#tr_'+v).remove(); 
  69.         }); 
  70.       } 
  71.     },'json'); 
  72.   }); 
  73.   //反选 
  74.   $("#fan").click(function(){ 
  75.     var checkAll=$('input[type="checkbox"]'); //获取复选 
  76.     $.each(checkAll,function(k,v){ 
  77.       this.checked=!this.checked; 
  78.     }) 
  79.   }); 
  80. </script> 

搞定 收工 ok!

Tags: Yii框架分页 coreseek

分享到: