Yii Gridview搜索显示文本的值

时间:2015-09-21 22:15:35

标签: php gridview yii

我目前正在使用Yii创建基本的gridview。我所做的是更改gridview中显示的文本,并试图找出如何使搜索功能能够搜索显示的文本。问题是它仍在搜索存储的值。

我想搜索的网格视图片段:

array(
                'name'=>'enabled',
                'value'=>'convertEnabled($data->enabled)',
                'type'  => 'raw',
            ),

我更改值的功能很简单:

function convertEnabled($value)
    {
        if($value == '1')
        {
            $returnedVar = 'Enabled';
        }
        else
        {
            $returnedVar = 'Disabled';
        }
        return $returnedVar;
    }     

我需要gridview做的是搜索启用/禁用而不是1或0.

现在搜索它看起来像$criteria->compare('enabled',$this->enabled);

如何让它搜索显示的文本而不是项目的值?

1 个答案:

答案 0 :(得分:0)

因此,您希望按enableddisabled而不是存储在数据库中的01进行搜索,对吗?

要做到这一点,您只需添加模型search,例如:

public function search()
    {
        // @todo Please modify the following code to remove attributes that should not be searched.

        $criteria=new CDbCriteria;

        $criteria->compare('id',$this->id);
        if($this->enabled != "") {
            if($this->enabled == "enabled") {
                $criteria->compare('enabled', 1);
            } elseif($this->enabled == "disabled") {
                $criteria->compare('enabled', 0);
            } else {
                $criteria->compare('enabled',$this->enabled, true);
            }
        }

        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));
    }

您将在$this->enabled中获取用户输入的值,您可以对其进行比较,以检查他们是否搜索了enableddisabled并添加了compare属性或{ {1}}及其对应的数据库值。希望有所帮助:)