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 事件机制(2)
Mar 23 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 PHP
php中++i 与 i++ 的区别
Aug 08 PHP
php不写闭合标签的好处
Mar 04 PHP
PHP5各个版本的新功能和新特性总结
Mar 16 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
php将数组转换成csv格式文件输出的方法
Mar 14 PHP
php cli配置文件问题分析
Oct 15 PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
PHP以json或xml格式返回请求数据的方法
May 31 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 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
php5.2.0内存管理改进
2007/01/22 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
jQuery 页面 Mask实现代码
2010/01/09 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
Python中用format函数格式化字符串的用法
2015/04/08 Python
Python中进程和线程的区别详解
2017/10/29 Python
详解python pandas 分组统计的方法
2019/07/30 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
Django获取应用下的所有models的例子
2019/08/30 Python
Python 脚本拉取 Docker 镜像问题
2019/11/10 Python
python求质数列表的例子
2019/11/24 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
企业给企业的表扬信
2014/01/13 职场文书
学习经验演讲稿
2014/05/10 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python