You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CActiveDataProvider分页异常:点击分页后无数据显示问题问询

分页点击第二页无数据的问题分析与修复

我来帮你拆解这个问题的核心原因,以及对应的修复方案:

问题根源

你的代码逻辑存在两个关键问题,直接导致了分页第二页无数据的现象:

  • 分页请求是GET,但搜索逻辑仅绑定POST:当点击分页链接时,浏览器发送的是GET请求,而你的代码只有在$_POST['CompanyProfile']存在时才会构建正确的查询条件。此时没有POST数据,代码会走初始的$criteria1逻辑——也就是cmpny_profile_id=-1的条件,自然查不到任何记录。
  • 搜索条件未在分页请求中保留:即使提交了表单,分页链接里也没有携带搜索关键词的参数,导致翻页时直接丢失了之前的搜索条件,回到了错误的默认查询。

另外,初始加载时的cmpny_profile_id=-1条件应该是测试用的吧?正常场景下初始加载应该展示所有公司记录,这个条件本身就会导致页面加载时无数据,和你描述的现象完全一致。

修复方案

我们可以通过以下几步来彻底解决这个问题:

  1. 同时支持GET和POST请求处理搜索条件
    把判断条件从$_POST改成$_REQUEST,这样不管是表单提交(POST)还是分页请求(GET),都能正确获取搜索参数:

    public function actionCompany() { 
        $model = new CompanyProfile(); 
        // 用$_REQUEST同时处理POST提交和GET分页请求
        if(isset($_REQUEST['CompanyProfile'])){ 
            // 用attributes批量赋值更规范,也能利用模型的验证规则
            $model->attributes = $_REQUEST['CompanyProfile'];
            $criteria = new CDbCriteria(); 
            if(!empty($model->cmpny_profile_name)) { 
                $criteria->addSearchCondition('cmpny_profile_name', $model->cmpny_profile_name); 
            } 
            $dataProvidernew= new CActiveDataProvider('CompanyProfile',array( 
                'criteria'=>$criteria,'pagination'=>array('pageSize'=>10), 
            )); 
        } else { 
            // 初始加载时,直接展示所有记录,去掉错误的cmpny_profile_id=-1条件
            $dataProvidernew= new CActiveDataProvider('CompanyProfile',array( 
                'pagination'=>array('pageSize'=>10), 
            )); 
        } 
        $this->render('company',array('model'=>$model,'dataProvider'=>$dataProvidernew)); 
    }
    
  2. 修改表单提交方式为GET(可选但推荐)
    在视图的表单代码里,把提交方式改成GET,这样搜索参数会显示在URL中,分页链接会自动带上这些参数,确保翻页时条件不丢失:

    <?php $form=$this->beginWidget('CActiveForm', array(
        'id'=>'company-profile-form',
        'method'=>'get', // 改为GET提交
        // 其他表单属性...
    )); ?>
    

为什么这样有效?

  • $_REQUEST会同时读取POST和GET参数,所以分页的GET请求也能拿到之前的搜索关键词,构建正确的查询条件。
  • 去掉初始的cmpny_profile_id=-1条件,确保页面首次加载时能展示正常的公司列表。
  • GET提交的表单参数会被CActiveDataProvider的分页组件自动包含在分页链接中,翻页时搜索条件不会丢失。

内容的提问来源于stack exchange,提问作者Nagaraju Chimmani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:37:43