yii使用相同的模型过滤两个cgrdiview

时间:2015-08-04 16:58:59

标签: php yii

我有两个使用相同模型的cgridview。 当我使用过滤器时,文本域名称是相同的(模型类)。

可以修改这个名字吗?

示例:

$model1 = new ClassName;
$model2 = new ClassName;
if(isset($_GET['cgrdiview_1'])) {
    $model1->attributes = $_GET['cgrdiview_1'];
}
if(isset($_GET['cgrdiview_2'])) {
    $model2->attributes = $_GET['cgrdiview_2'];
}

相反,我有:

$_GET['model_class'] 

对于cgridview

2 个答案:

答案 0 :(得分:0)

是的,可以通过添加id字段来实现。

id属性指定HTML元素的唯一ID(该值在HTML文档中必须是唯一的。)

id属性最常用于指向样式表中的样式,并通过JavaScript(通过HTML DOM)来操作具有特定id的元素。

如果您选中Yii API Documentation for CGridView您可以看到可以为CGridview设置id field

在您的视图中,更改CGridview代码以包含以下内容:

'id' => 'cgridview_1'

此代码需要添加到gridview的顶部。例如:

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'cgridview_1',
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'title',          // display the 'title' attribute
        'category.name',  // display the 'name' attribute of the 'category' relation
        'content:html',   // display the 'content' attribute as purified HTML
        array(            // display 'create_time' using an expression
            'name'=>'create_time',
            'value'=>'date("M j, Y", $data->create_time)',
        ),
        array(            // display 'author.username' using an expression
            'name'=>'authorName',
            'value'=>'$data->author->username',
        ),
        array(            // display a column with "view", "update" and "delete" buttons
            'class'=>'CButtonColumn',
        ),
    ),
));

答案 1 :(得分:0)

我在每列中使用自定义过滤器解决了我的问题:

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'cgridview_2',
    'dataProvider' => $data,
    'filter' => $filter,
    'columns'=>array(
        array(
            'name' => 'column1',
            'filter' => CHtml::textField("cgridview2[column1]", $filter->column1),
        ),
        array(
            'name' => 'column2',
            'filter' => CHtml::textField("cgridview2[column2]", $object->column2),
        ),