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


Posted in PHP onFebruary 08, 2019

本文实例讲述了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控制器

/**
 * 话题搜索
 *
 * @author YING
 * @param void
 * @return void
 */
public function actionTopic()
{
  //模拟数据
  $studId=2; //用户id
  $classId=2; //班级id
  $title=""; //为空
  //实例化模型
  $studTopic=new StudTopic();
  //查询
  $data=$studTopic->find()->select('*')->innerJoin('stud_user','stud_topic.stud_id=stud_user.stud_id')->where(['class_id'=>$classId]);
  //实例化分页类
  $pagination=new Pagination(['totalCount' => $data->count()]);
  //每页条数
  $pagination->setPageSize(3);
  //执行分页
  $topicInfo= $data->offset($pagination->offset)->limit($pagination->limit)->asArray()->all();
  //返回值
  return $this->render('topicList',['topicInfo'=>$topicInfo,'pages'=>$pagination,'studId'=>$studId,'classId'=>$classId,'title'=>$title]);
}
/**
 * coreseek搜索
 *
 * @author YING
 * @param void
 * @return void
 */
public function actionSearchTitle()
{
  //接值
  $title=Yii::$app->request->get('t_title');
  $classId=Yii::$app->request->get('class_id');
  //模拟数据
  $studId=2; //用户id
  //coreseek 搜索
  $cl = new SphinxClient ();
  $cl->SetServer ( '127.0.0.1', 9312);
  $cl->SetConnectTimeout ( 3 );
  $cl->SetArrayResult ( true );
  $cl->SetMatchMode ( SPH_MATCH_ANY);
  $res = $cl->Query ( $title, "*" );
  //如果存在值
  if($res['total']){
    $matches=$res['matches'];
    foreach($matches as $key => $val){
     $tidArray[]=$val['id'];
    }
  }
  //转化为字符串
  $tidStr=isset($tidArray) ? implode(',',$tidArray) : 0;
  //实例化模型
  $studTopic=new StudTopic();
  //查询
  $data=$studTopic->find()->select('*')->innerJoin('stud_user','stud_topic.stud_id=stud_user.stud_id')->where("t_id in ($tidStr)");
  //实例化分页类
  $pagination=new Pagination(['totalCount' => $data->count()]);
  //每页条数
  $pagination->setPageSize(3);
  //执行分页
  $topicInfo= $data->offset($pagination->offset)->limit($pagination->limit)->asArray()->all();
  //加载模板
  return $this->render('topicList',['topicInfo'=>$topicInfo,'pages'=>$pagination,'studId'=>$studId,'classId'=>$classId,'title'=>$title]);
}

view视图

<?php
use yii\widgets\ActiveForm;
use yii\helpers\Html;
use yii\helpers\Url;
use yii\widgets\LinkPager;
?>
<table class="table">
  <tr>
    <td>标题</td>
    <td>作者</td>
    <td>发布时间</td>
    <td>操作</td>
  </tr>
  <?php foreach($topicInfo as $key => $val): ?>
    <tr id="tr_<?= $val['t_id']?>">
      <td><input type="checkbox" tid="<?= $val['t_id']?>"/> <?= $val['t_title']?></td>
      <td><?= $val['stud_name']?></td>
      <td><?= date('Y-m-d H:i:s',$val['add_time'])?></td>
      <?php if($val['stud_id']==$studId):?>
      <td><a href="index.php?r=student/update-topic&topic_id=<?= $val['t_id']?>" rel="external nofollow" >编辑</a>||<a href="">删除</a></td>
      <?php else: ?>
      <td><a href="">删除</a></td>
      <?php endif; ?>
    </tr>
  <?php endforeach; ?>
  <tr>
    <td><input type="button" value="全选/全不选" id="all"/></td>
    <td><input type="button" value="反选" id="fan"/></td>
    <td><input type="button" value="批删" id="del"/></td>
  </tr>
</table>
<?php
echo LinkPager::widget([
  'pagination' => $pages,
]);
?>
<script src="./css/js/jquery.1.12.min.js"></script>
<script>
  //全选/全不选
   var temp=true; //临时变量
  $('#all').click(function(){
    $('input[type="checkbox"]').prop('checked',temp);
    //取反
    temp=!temp;
  })
  //批删
  $('#del').click(function(){
    var checkAll=$('input[type="checkbox"]'); //获取全部的复选框
    var length=checkAll.length; //计算长度
    var arr=new Array(); //定义数组
    var str=""; //定义字符串
    //循环
    $.each(checkAll,function(k,v){
      //判断是否选中
      if(checkAll[k].checked){
        arr.push(checkAll.eq(k).attr('tid'));
      }
    })
    //转化为字符串
    str=arr.join(',');
    //ajax
    var url="index.php?r=student/delete-all"; //地址
    $.get(url,{str:str},function(msg){
      if(msg){
        //window.location.reload(); //刷新页面
        //节点删除
        $.each(arr,function(k,v){
          $('#tr_'+v).remove();
        });
      }
    },'json');
  });
  //反选
  $("#fan").click(function(){
    var checkAll=$('input[type="checkbox"]'); //获取复选
    $.each(checkAll,function(k,v){
      this.checked=!this.checked;
    })
  });
</script>

搞定 收工 ok!

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP生成静态页
Nov 25 PHP
phpfans留言版用到的install.php
Jan 04 PHP
php+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
改变Apache端口等配置修改方法
Jun 05 PHP
PHP 加密与解密的斗争
Apr 17 PHP
PHP 实用代码收集
Jan 22 PHP
PHP文件注释标记及规范小结
Apr 01 PHP
php实现查看邮件是否已被阅读的方法
Dec 03 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
遍历echsop的region表形成缓存的程序实例代码
Nov 01 PHP
PHP新手指南
Apr 01 PHP
Yii2框架自定义验证规则操作示例
Feb 08 #PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 #PHP
PHP实现字符串大小写转函数的功能实例
Feb 06 #PHP
PHP addcslashes()函数讲解
Feb 03 #PHP
PHP addslashes()函数讲解
Feb 03 #PHP
PHP simplexml_load_string()函数实例讲解
Feb 03 #PHP
PHP simplexml_load_file()函数讲解
Feb 03 #PHP
You might like
基于文本的访客签到簿
2006/10/09 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
2014/01/06 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
javascript数组详解
2014/10/22 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
python函数的万能参数传参详解
2019/07/26 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
PyCharm配置anaconda环境的步骤详解
2020/07/31 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
工商管理专业学生的自我评价
2013/10/01 职场文书
茶叶店创业计划书范文
2014/01/19 职场文书
践行三严三实心得体会
2014/10/13 职场文书
整改落实自查报告
2014/11/05 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
Elasticsearch 索引操作和增删改查
2022/04/19 Python