我目前正在使用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);
如何让它搜索显示的文本而不是项目的值?
答案 0 :(得分:0)
因此,您希望按enabled
或disabled
而不是存储在数据库中的0
或1
进行搜索,对吗?
要做到这一点,您只需添加模型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
中获取用户输入的值,您可以对其进行比较,以检查他们是否搜索了enabled
或disabled
并添加了compare
属性或{ {1}}及其对应的数据库值。希望有所帮助:)