十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍Yii框架结合sphinx Ajax如何实现搜索分页功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
成都创新互联自2013年起,先为陆丰等服务建站,陆丰等地企业,进行企业商务咨询服务。为陆丰企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。具体如下:
效果图:
控制器:
request->get('sou'); $p1=Yii::$app->request->get('p1'); $p2=Yii::$app->request->get('p2'); //echo $sou.$p1.$p2;die; //sphinx搜索 $cl = new SphinxClient(); $cl -> SetServer('127.0.0.1',9312); $cl -> SetConnectTimeout(3); $cl -> SetArrayResult(true); if($sou) { //只搜索条件 $cl -> SetMatchMode(SPH_MATCH_ANY); } else { //全局扫描 $cl -> SetMatchMode(SPH_MATCH_FULLSCAN); } //设置价格(注意:创建索引时,价格属性定义为int) if($p1&&$p2) { $cl->SetFilterRange('price',$p1,$p2); } //搜索查询关键字 $res = $cl->Query($sou,"mysql_goods"); //ajax分页 $model=new Goods(); foreach ($res['matches'] as $key => $val) { $ids[] = $val['id']; } //查询条件数据 $query = $model->find()->where(['id'=>$ids]); $countQuery = clone $query; $pages = new Pagination(['totalCount' => $countQuery->count(),'defaultPageSize'=>3]); //分页 $models = $query->offset($pages->offset) ->limit($pages->limit) ->all(); //关键字变红 foreach($models as $k=>$v) { $models[$k]['goods_name']=str_replace("$sou","$sou",$v['goods_name']);//将关键字替换成红色字体 } //显示列表,分配数据 return $this->render('index', [ 'res' => $models, 'pages' => $pages, 'sou'=>$sou, 'p1'=>$p1, 'p2'=>$p2 ]); } } ?>
视图层:
'index.php?r=sou/index', 'method' => 'get' ]) ?>beginBlock('test2') ?> $(document).on('click', '.pagination a', function(e) { //阻止page显示,看地址 e.preventDefault(); var href = $(this).attr('href'); $.post(href,function(msg){ $('#list').html(msg); }) }); endBlock(); $this->registerJs($this->blocks['test2'] , yii\web\View::POS_END) ?> 商品名称: "> 价格区间: ">---">= LinkPager::widget(['pagination' => $pages]) ?>
$v){?> ID 商品名称 商品价格
以上是“Yii框架结合sphinx Ajax如何实现搜索分页功能”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!