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 开发工具
Dec 06 PHP
phpMyAdmin 安装及问题总结
May 28 PHP
PHP正确配置mysql(apache环境)
Aug 28 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
php生成短网址示例
May 05 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
PHP 配置后台登录以及模板引入
Jan 24 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
php支付宝APP支付功能
Jul 29 PHP
PHP数组常用函数实例小结
Aug 20 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
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
php计算title标题相似比的方法
2015/07/29 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
JS event使用方法详解
2008/04/28 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
Js sort排序使用方法
2011/10/17 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
深入理解javascript作用域和闭包
2014/09/23 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
对python的文件内注释 help注释方法
2018/05/23 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
教师评优的个人自我评价分享
2013/09/19 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
信息管理应届生求职信
2014/03/07 职场文书
本科生求职信
2014/06/17 职场文书
《花钟》教学反思
2016/02/17 职场文书
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL