yii2万能搜索框的写法 [基础教程]

来源:互联网 发布:安防监控光纤网络系统 编辑:程序博客网 时间:2024/06/05 18:00

也可以搜所:必免了搜素时跳到首页
<form action="?r=uploadow" method="get">
    <input type="hidden" name="r" value="uploadow">//重点
    <input type="text" name="search"/><input type="submit" value="搜索"/>
</form>


yii2万能搜索框的写法 [基础教程]

作者:代号黑鹰发布于:2016-11-08浏览:1853次 收藏

先让大家看一下搜索框

I63OLEB1]O5VI`UI}}7E)CY.png

上面两个框我写好了,突然他妈的产品经理说要加个搜索功能那我还干毛线啊?

            ---之前作为一个初级程序员我是这么写的

            在控制器老老实实的接收搜框传来的input[]控件的name值拼接sql语句----还是那一句我不想改代码让前端搞去。怎么办?(不过我无意中发现别人在前端这样传值--看下面(注意input里面的name取名))

 <form action="cate/index" method="get">  <div class="form-group">     <label>编号:</label>       <input type="text" class="form-control" id="query[cid]" name="query[cid]">  </div>  <div class="form-group">    <label>分类名称:</label>    <input type="text" class="form-control" id="query[name]" name="query[name]"> </div> <div class="form-group">    <input  type="submit" class="btn btn-primary btn-sm" value="搜索"> </div></form>

后台接受的是什么呢?

$querys = Yii::$app->request->get('query');   var_dump($querys) //打印出来的是数组$querys = Yii::$app->request->get('query[name]');   var_dump($querys) //打印出来的是字符

原来前端还可以这样传值,好-----搜索框让前端做了,不鸟你这个项目经理了

现在后台怎么操作看下面代码

$querys = Yii::$app->request->get('query');if (count($querys) > 0) {    $i=1;    foreach ($querys as $key => $value) {        $value = trim($value);        if (empty($value) == false) {            if($i){                    $i=0;                $query = $query->where(array('like', $key, $value));            }else{                $query = $query->andWhere(array('like', $key, $value));            }        }    }}$pagination = new Pagination([        'totalCount' => $query->count(),        'pageSize' => '10',        'pageParam' => 'page',        'pageSizeParam' => 'per-page']);$models = $query    ->offset($pagination->offset)    ->limit($pagination->limit)    ->all();

总结:

这里不能进行模糊查询,但是在foreach()里面可以大做文章。比如:  a.判断一下是否是数字---进行精准查询条件构造 $cond = ['=',$key, 10]  b.判断一下是否是时间---进行时间条件查询构造 $cond = ['between',$key, 1, 10]/*这里可能还要想一下*/  c.没有特殊情况    ---进行模糊查询条件构造 $cond = ['like',$key,$value]    好了就介绍到这里了:过几天写一个widget控件给大家
原创粉丝点击