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学习之PHP变量
Oct 09 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
PHP 操作文件的一些FAQ总结
Feb 12 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
php 文章调用类代码
Aug 11 PHP
PHP编码规范的深入探讨
Jun 06 PHP
php计算2个日期的差值函数分享
Feb 02 PHP
php数组随机排序实现方法
Jun 13 PHP
深入理解PHP之OpCode原理详解
Jun 01 PHP
php mysql 封装类实例代码
Sep 18 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP __call()方法实现委托示例
May 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
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
Yii rules常用规则示例
2016/03/15 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
动态刷新 dorado树的js代码
2009/06/12 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
2020/12/30 jQuery
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
美丽的现代设计家具:2Modern
2018/07/26 全球购物
学生就业推荐信
2013/11/13 职场文书
医学检验专业大学生求职信
2013/11/18 职场文书
核心价值观演讲稿
2014/05/13 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
如何用python插入独创性声明
2021/03/31 Python
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android