本文实例讲述了Yii2.0框架实现带分页的多条件搜索功能。分享给大家供大家参考,具体如下:

方法一

在控制器中

public function actionShow(){  $where["title"]=Yii::$app->request->get("title");  $where["content"]=Yii::$app->request->get("content");  $query=new Query();  $query->from("votes");  // votes 是表名  if(!empty($where["title"])||!empty($where["content"])){    $query->andFilterWhere(      ["like","title",$where["title"]]    )->orFilterWhere(      ["like","content",$where["content"]]    );  }  $users=$query->from("votes")->all();  $pages = new Pagination(["totalCount" =>$query->count(),"pageSize"=>"2"]);  $users = $query->offset($pages->offset)->limit($pages->limit)->all();  return $this->render("show",["data"=>$users,"where"=>$where,"pages"=>$pages]);}

在v层

<?phpuse yiihelpersHtml;use yiiwidgetsActiveForm;use yiihelpersUrl;use yiiwidgetsLinkPager;?>
<?php$form=ActiveForm::begin([  "action"=>Url::toRoute(["show"]),  "method"=>"get",]);echo "姓名"," ",Html::input("text","title");echo "简介"," ",Html::input("text","content");echo Html::submitButton("提交");ActiveForm::end();echo "<br/>";echo "<br/>";?>

显示在v层的分页

<?phpecho LinkPager::widget([  "pagination"=>$pages,  "nextPageLabel"=>"下一页",  "firstPageLabel"=>"首页"])?>

方法二(不带分页  是另外一种方法)

public function actionShow(){  $titles=Yii::$app->request->post("title");  $content=Yii::$app->request->post("content");  $where=1;  if($titles!=""){    $where.=" and title like "%$titles%"";  }  if($content!=""){    $where.=" and content like "%$content%"";  }  $sql="select * from votes where $where";  $users=Yii::$app->db->createCommand($sql)->query();  return $this->render("show",["data"=>$users]);}

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。