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 相关文章推荐
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
Nov 07 PHP
php 无法加载mcrypt.dll的解决办法
Apr 03 PHP
WampServer搭建php环境时遇到的问题汇总
Jul 23 PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 PHP
Yii视图操作之自定义分页实现方法
Jul 14 PHP
PHP7匿名类用法分析
Sep 26 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 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
php获取操作系统语言代码
2013/11/04 PHP
php数组使用规则分析
2015/02/27 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
关于js new Date() 出现NaN 的分析
2012/10/23 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
jQuery使用方法
2017/02/04 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
python发送邮件功能实现代码
2016/07/15 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
Python用来做Web开发的优势有哪些
2020/08/05 Python
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
环境科学专业研究生求职信
2013/10/02 职场文书
班班通项目实施方案
2014/02/25 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
2016党校学习心得体会
2016/01/07 职场文书