Php CGridView搜索常量的功能

Php CGridView搜索常量的功能,php,yii,cgridview,Php,Yii,Cgridview,我有来自数据库的常量id,并使用以下代码在CGridView中显示它们 'columns'=>array( 'id', 'name', 'email', array( 'name' => 'deleted', 'value' => '$data->deleted == 1 ? "Yes" : "No"',//like this ), ) 现在,当我通过CGridview搜索时,它只按数字搜索

我有来自数据库的常量id,并使用以下代码在CGridView中显示它们

'columns'=>array(
    'id', 
    'name',
    'email',
    array(
        'name' => 'deleted', 
        'value' => '$data->deleted == 1 ? "Yes" : "No"',//like this 
     ),
)

现在,当我通过CGridview搜索时,它只按数字搜索,即1或2。我需要按“是”或“否”进行搜索。可能吗?

假设您的模型是用户,并且您正在显示该表的CGridView,则在UserController中获取如下参数:-

if(isset($_GET['User'])){
    $model->setAttributes($_GET['User']);
}
if(isset($_GET['User']['deleted'])){
    $value = $_GET['User']['deleted'];
    if($value == 'Yes' || $value == 'yes'){
        $model->setAttribute('deleted', 1);
    }
    if($value == 'No' || $value == 'no'){
        $model->setAttribute('deleted', 0);
    }
}
使用此选项,您可以通过“是”或“否”搜索“已删除”字段

更新:-

您可以使用以下代码在CGridView中将下拉菜单作为过滤器

$filter = array(
    '0' => 'No',
    '1' => 'Yes'
);
...
array(
    'name' => 'deleted', 
    'value' => '$data->deleted == 1 ? "Yes" : "No"',
    'filter' => $filter
),

这将为您提供一个下拉列表,其中包含阵列中指定的过滤器。

很好!但这并没有扩展CGridView的智能搜索功能。@Namelus请检查更新的答案以了解智能搜索功能。