문제

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