我是 Yii 的新手,我很难弄清楚这一点。我想根据用户选择的选项在页面上显示多个 CGridView,每个 gridview 只显示该选项的记录。在这种情况下,选项是作业状态,例如打开、关闭、进行中等。
我有一些代码可以通过遍历数组来显示多个网格视图,但我不确定如何过滤它们:
$test = array(1,2,3,4,5);
foreach ($test as $value) {
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'job-grid',
'dataProvider'=>$model->search(),
'columns'=>array(
'ID',
'CustomerCompany',
'FirstName',
'LastName',
/* etc */
),
));
}
关于如何从数组中的值过滤每个 gridview 的任何想法?
谢谢!
更新
好的,我想出了如何做我想做的事情。我在控制器中处理它是这样的:
public function actionBoard()
{
$models = array();
$statuses = JobStatus::model()->findAll();
foreach ($statuses as $status)
{
$model=new Job('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['Job']))
$model->attributes=$_GET['Job'];
$model->Status = $status->ID;
$models[$status->Status] = $model;
}
$this->render('board',array('models'=>$models));
}
所以我找到所有状态,然后使用 ID 字段进行搜索,将结果放入数组中,然后将其传递给视图。我在视图中这样处理:
foreach ($models as $status)
{
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'job-grid',
'dataProvider'=>$status->search(),
'columns'=>array(
'ID',
'CustomerCompany',
'FirstName',
'LastName',
'Phone1',
'Phone2',
/* etc */
),
));
基本上,为“状态”数组中的每个“状态”创建一个网格视图。似乎可行,只是花了一些时间用 MVC 术语而不是我习惯的旧 ASP.NET 数据绑定方法来考虑它。