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创建Cookie数组的详解
Jul 03 PHP
使用PHP编写的SVN类
Jul 18 PHP
PHP利用str_replace防注入的方法
Nov 10 PHP
CI(CodeIgniter)框架配置
Jun 10 PHP
php递归json类实例
Dec 02 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
php简单分页类实现方法
Feb 26 PHP
PHP编写RESTful接口
Feb 23 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
Laravel框架搜索分页功能示例
Feb 01 PHP
Laravel向公共模板赋值方法总结
Jun 25 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
Nov 04 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
1.PHP简介
2006/10/09 PHP
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
php生成zip文件类实例
2015/04/07 PHP
php筛选不存在的图片资源
2015/04/28 PHP
简单谈谈favicon
2015/06/10 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
2013/07/15 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
JSONP基础知识详解
2017/03/19 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
python网络编程学习笔记(四):域名系统
2014/06/09 Python
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
python使用urllib2提交http post请求的方法
2015/05/26 Python
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
Python实现自动上京东抢手机
2018/02/06 Python
Python实现井字棋小游戏
2020/03/09 Python
大学社团活动策划书
2014/01/26 职场文书
电脑专业个人求职信范文
2014/02/04 职场文书
带病坚持工作事迹
2014/05/03 职场文书
影子教师研修方案
2014/06/14 职场文书
坎儿井导游词
2015/02/09 职场文书
生日祝酒词大全
2015/08/10 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python