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

也可以搜所:必免了搜素时跳到首页
<form action="?r=upload ow" method="get">
    <input type="hidden" name="r" value="upload ow">//重点
    <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控件给大家
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值