I have constants id coming from database and i am displaying them in my CGridView using following code

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

Now when i search through CGridview, it only searches by number i.e 1 or 2. I need to search by Yes or No. Is it possible?

有帮助吗?

解决方案

Supposing your model is User and you are displaying that table's CGridView, in the UserController get your parameter like this :-

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);
    }
}

Using this you can search the field 'deleted' by 'Yes' or 'No'

Update :-

You can use the following code to have a dropdown menu as filters in CGridView

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

This will give you a dropdown with filters specified in the array.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top