我是 Yii 和 php 新手,我正在尝试根据 Yii 教程网站生成的默认索引页面(使用 CListView)制作页面。gii 生成了我的模型和带有控制器的 CRUD 和索引页面有将近 100 页,我想要做的就是:
添加一个文本字段和一个按钮,以通过“控制器/索引”视图为结果指定条件。
例如,我想添加一个过滤器“年份”,所以我在 CListView 上方添加了一个表单:
<?php $this->beginWidget('CActiveForm', array('id'=>'fromid')); ?>
<?php echo CHtml::textField('year');?>
<?php echo CHtml::submitButton('search',array('submit'=>'index.php?r=mycontroller/index')); ?>
<?php $this->endWidget(); ?>
因此,通过单击按钮,它将发布一个带有来自 id 'year' 的文本字段值的提交操作。我在控制器中捕捉到这样的动作:(在 mycontroller 中)
public function actionIndex()
{
if(isset($_POST['year']))
{
$y = (int)$_POST['year'];
$dataProvider=new CActiveDataProvider('Model',array('criteria'=>array('condition'=>'date='.$y);
$this->render('index',array('dataProvider'=>$dataProvider));
}
else
{
$dataProvider=new CActiveDataProvider('Model');
$this->render('index',array('dataProvider'=>$dataProvider));
}
}
上面的代码工作正常。我输入了一年并单击按钮,刷新了年龄并过滤了结果。但问题是,如果结果被分页成几页(比如2页),我点击下一页按钮,过滤后的结果就没有了!,结果又回到了100页。我真的不知道这是怎么回事。
Clistview 非常简单,这里我没有添加任何额外的属性:
<?php $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
)); ?>
那么我的代码有什么问题?