Yii框架引入coreseek分页功能示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-06 21:22:43 浏览: 评论:0
这篇文章主要介绍了Yii框架引入coreseek分页功能,结合实例形式分析了Yii框架结合coreseek搜索进行分页的相关操作技巧,需要的朋友可以参考下。
本文实例讲述了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!
Tags: Yii框架分页 coreseek
相关文章
- ·yii框架使用分页的方法分析(2021-12-07)
- ·Yii框架分页技术实例分析(2021-12-13)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)