thinkcmf 搜索分页点击下一页无法保持搜索条件

今天lz找这个bug找了一天,lz用的是thinkcmf,二次开发,先上代码:

public function index(){
//    if($_SESSION['search']){
//        $search=$_SESSION['search'];
//        $where['name']  = array('like', "%".$search."%");
//    }else {
//        $_SESSION['search']=I('search');
//    }
        
   $search=I('search');
   $where['name']  = array('like', "%".$search."%");
   $where['des']  = array('like', "%".$search."%");
   $where['_logic']='or';
   $count=$this->introduce_model->where($where)->count();
   $page = $this->page($count, 3); 
   $introduce=$this->introduce_model
   ->where($where)
   ->limit($page->firstRow . ',' . $page->listRows)
   ->select();
   $this->assign("introduces",$introduce);
   $this->assign("page", $page->show("Admin"));
   $this->assign("search",$search);
   $this->display();
}

这是我的controller/index

对应的页面:

<form post="post" action="{:U('introduce/index')}">
<input type="text"  name="search" value="{$search}"  >
<button type="submit">搜索</button>
</form>


好,看来没问题 搜索一下,恩,第一页是搜索后的结果,不错,点击下一页

??!!搜索条件就失效了,尝试过很多办法,

包括添加:

foreach($sear as $key=>$val) {     
    $Page->parameter   .=   "$key=".urlencode($val[1]).'&'; 
   }  

然并卵。。。

又看了page类的源码,发现以上写法是thinkphp的写法

到了thinkcmf就不一样了。

方法一:

网上有人说吧post改成get

试了一下,?????,直接跳到首页了什么鬼,看了一下URL:

/think/index.php?search=a

没错 g m a参数都不见了,但是这是html的默认处理:把表单中的参数直接接在?后面

所以 生成不了想要的url 

这时候想到一个很蠢的办法:

<form post="get" action="{:U('introduce/index')}">
<input type="hidden" name="g" value="Admin" />
<input type="hidden" name="m" value="introduce" />
<input type="hidden" name="a" value="index" />
<input type="text"  name="search" value="{$search}"  >
<button type="submit">搜索</button>
</form>

人为设定g m a,这时候get一下表单,看看url:/think/index.php?g=Admin&m=Introduce&a=index&search=a

没错了,点击下一页,显示正常,是搜索后的结果。

方法二:

用js,通过给url加参数访问,略


总结:有没有发现只要用get都成功了,看一下url,点击第二页的时候url:

/think/index.php?g=Admin&m=Introduce&a=index&search=a&p=2

这就很明显为什么了:

当我第一次搜索时url变成了/think/index.php?g=Admin&m=Introduce&a=index&search=a,

所以当我点击下一页的时候,在这个url的基础上,参数增加了p=2,

这相当于用url储存了搜索条件

而这是post所办不到的


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值