php教程

超轻量级php框架startmvc

Yii框架引入coreseek分页功能示例

更新时间:2020-04-03 03:59:07 作者:startmvc
本文实例讲述了Yii框架引入coreseek分页功能。分享给大家供大家参考,具体如下:把sphinxapi.

本文实例讲述了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框架 coreseek 分页