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执行速度全攻略(下)
Oct 09 PHP
一个程序下载的管理程序(四)
Oct 09 PHP
建立动态的WML站点(一)
Oct 09 PHP
php中使用redis队列操作实例代码
Feb 07 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
php while循环控制的简单实例
May 30 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
Nov 06 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 PHP
Yii框架的布局文件实例分析
Sep 04 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 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
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
php获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
Java中final关键字详解
2015/08/10 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
js Flash插入函数免激活代码
2009/03/31 Javascript
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
基于Axios 常用的请求方法别名(详解)
2018/03/13 Javascript
layui使用label标签的方法
2019/09/14 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
vue3中轻松实现switch功能组件的全过程
2021/01/07 Vue.js
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
Python性能优化的20条建议
2014/10/25 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
幼儿教师求职信
2014/05/24 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
会计专业自荐信范文
2015/03/05 职场文书
教师节班会主持词
2015/07/06 职场文书
运动会通讯稿50字
2015/07/20 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书