這篇文章主要介紹Yii框架結(jié)合sphinx Ajax如何實現(xiàn)搜索分頁功能,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)自2013年起,先為陸豐等服務(wù)建站,陸豐等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為陸豐企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。具體如下:
效果圖:
控制器:
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); } //設(shè)置價格(注意:創(chuàng)建索引時,價格屬性定義為int) if($p1&&$p2) { $cl->SetFilterRange('price',$p1,$p2); } //搜索查詢關(guān)鍵字 $res = $cl->Query($sou,"mysql_goods"); //ajax分頁 $model=new Goods(); foreach ($res['matches'] as $key => $val) { $ids[] = $val['id']; } //查詢條件數(shù)據(jù) $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(); //關(guān)鍵字變紅 foreach($models as $k=>$v) { $models[$k]['goods_name']=str_replace("$sou","$sou",$v['goods_name']);//將關(guān)鍵字替換成紅色字體 } //顯示列表,分配數(shù)據(jù) 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) ?> 商品名稱: "> 價格區(qū)間: ">---">= LinkPager::widget(['pagination' => $pages]) ?>
$v){?> ID 商品名稱 商品價格
以上是“Yii框架結(jié)合sphinx Ajax如何實現(xiàn)搜索分頁功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!