手机版

Yii框架结合斯芬克斯,阿贾克斯实现搜索分页功能示例

时间:2021-09-14 来源:互联网 编辑:宝哥软件园 浏览:

本文实例讲述了Yii框架结合斯芬克斯,阿贾克斯实现搜索分页功能的方法。分享给大家供大家参考,具体如下:

效果图:

控制器:

?phpnamespace后端\控制器;使用Yii使用yii \ web \控制器;使用yii \数据\分页;使用狮身人面像使用yii \ db \查询使用yii \小部件\链接寻呼机使用后端\模型\商品;类声音控制器扩展了控制器{ //显示搜索页面公共函数actionIndex() { //接受搜索值$ sou=yii : $ app-request-get(' sou ');$ P1=yi : $ app-request-get(' P1 ');$ p2=Yi : $ app-request-get(' p2 ');//echo $sou .$p1 .$ p2死去;//斯芬克斯搜索$ cl=new Sphinxclient();$cl - SetServer('127.0.0.1 ',9312);$ cl-SetConnectTimeout(3);$ cl-SetArrayResult(true);if($sou) { //只搜索条件$cl -设置匹配模式(SPH)匹配_ ANY);} else { //全局扫描$cl -设置匹配模式(SPH)匹配_全扫描);} //设置价格(注意:创建索引时,价格属性定义为int)if($p1 $ p2){ $ cl-SetFilterRange(' price ',$ P1,$ p2);} //搜索查询关键字$res=$cl-Query($sou,' MySQL _ goods ');//ajax分页$ model=new Goods();foreach ($res['matches']作为$ key=$ val){ $ ids[]=$ val[' id '];} //查询条件数据$ query=$ model-find()-其中([' id '=$ id]);$countQuery=克隆$ query $ pages=新分页([' total count '=$ count query-count(),' DefaultPageSize '=3]);//分页$ models=$ query-offset($ page-offset)-limit($ page-limit)-all();//关键字变红foreach($ models as $ k=$ v){ $ models[$ k][' goods _ name ']=str _ replace(' sou ',' font color='red'$sou/font ',$ v[' goods _ name ']);//将关键字替换成红色字体} //显示列表,分配数据返回$this-render('index ',[ 'res'=$models,' pages'=$pages,' sou'=$sou,' p1'=$p1,' p2 '=$ p2]);}}?视图层:

?phpuse yii \ helpers \ Html使用yii \小部件\活动表单使用yii \ widgets \ LinkPager $ form=active form : begin([' action '=' index。PHP?r=sou/index ',' method'='get'])?centerdiv id='list '商品名称:输入类型=“文本”名称='sou '值='?php echo $sou?价格区间:输入类型=“文本”名称='p1 '值='?php echo $p1?-输入类型=“文本”名称='p2 '值='?php echo $p2?输入类型='提交'值='搜索表格边框='1 '样式=' width:500px '第三次商品名称/th商品价格/th /tr?php foreach($res as $key=$v){?tr td?PHP echo $ v[' id '];TD/TD?PHP echo $ v[' goods _ name '];TD/TD?PHP echo $ v[' price '];/td /tr?php }?/table!-分页- ?=linkpage :小部件([' pagination '=$ pages])?/div/center?php ActiveForm:end()?-显示- ?php $this-beginBlock('test2 ')?$(文档)。打开('点击','。分页' a ',函数(e) { //阻止页,面,张,版显示,看地址e . PreventDefault();var href=$(this).attr(' href ');$.post(href,function(msg){ $('#list ')).html(msg);}) });PHP $ this-end block();$ this-registerJs($ this-blocks[' test 2 '],yii\web\View:POS_END)?更多关于Yii相关内容感兴趣的读者可查看本站专题: 《Yii框架入门及常用技巧总结》 、 《php优秀开发框架总结》 、 《smarty模板入门基础教程》 、 《php面向对象程序设计入门教程》 、 《php字符串(string)用法总结》 、 《php+mysql数据库操作入门教程》 及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Yii框架的服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。

版权声明:Yii框架结合斯芬克斯,阿贾克斯实现搜索分页功能示例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。