【问题标题】:yii dataprovider pagination after postyii dataprovider 发布后分页
【发布时间】:2015-10-25 22:09:30
【问题描述】:

我有一个搜索表单。我想对结果进行分页。

$criteria 类似这样的:

     if($_POST["tipus"] != 4){
            $criteria->compare('t.tipus',$_POST["tipus"],true);
        }
        if($_POST["varos"] != 0){
            $criteria->compare('`apartman`.`city`', $_POST["varos"], true);
        }
        if($_POST["ferohely"] != 0){
            $criteria->compare('t.ferohely', $_POST["ferohely"], true);
        }

我的数据提供者:

     $dataProvider= new CActiveDataProvider('UserAndApartman', array(
                    'criteria'=>$criteria,
                    'sort'=>array(
                        'defaultOrder'=>'t.id DESC',

                    ),
                    'pagination'=>array(
                                  'pageSize'=>2,
                              ),
                    ));}

 $this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'kereses_eredmenyek_view',
)); 

所以如果我点击第二页,帖子就不会再出现了。如何自动发布?我可以通过分页获得$dataprovider 吗?

【问题讨论】:

  • 您的代码分页工作正常。不太确定您要的是什么?
  • 你必须使用表单方法get not post,并从$_GET数组中获取参数

标签: php yii pagination


【解决方案1】:

您在使用 $_POST 时,$_POST['tipus'] 和其他数据会丢失 您正在导航到下一页,因为您没有将其发布到 第 2、3 页等。您可以做两件事:

将 $_POST['tipus'] 存储在会话中,以便下一页“知道”它必须使用哪一年。 将其作为 $_GET 参数存储在 url 中,因此不要使用 $_POST['tipus'],而是使用 $_GET['tipus']。当您导航到第 2 页时,$_GET['tipus'] 在下一页的 url 中可用。 最后一个是我认为最简单的一个,这就是我通常使用它的方式。 如果您使用 get 方法,请将 CActiveForm 行更改为:

 <?php $this->beginWidget('CActiveForm', array(
             'id'=>'fromid',
             'method' => 'get'
    )); ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多