我有一个 CGridView,我想在其中搜索。问题是我有一个由模型中的函数修改的列。一切都从 search.php 视图开始,其中包含一个如下所示的 cgridview:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'grid-demande',
'summaryText'=>'',
'dataProvider'=>$model->search(),
//'filter'=>$model,
'cssFile'=>Yii::app()->request->baseUrl."/css/my_gridview.css",
'columns'=>array
(
array(
'name'=>'id_post',
'htmlOptions'=>array('width'=>'16%'),
),
array(
'name'=>'fk_authorid',
'htmlOptions'=>array('width'=>'16%'),
'value'=>array($this,'renderNameDmd'),
),
)
如您所见,调用函数 renderNameDmd 来呈现作者的姓名。此函数在我的模型中,但从控制器调用:
protected function renderNameDmd($data,$row)
{
$model=$this->loadModelDmd($data->id_post);
return $model->getChAuthor();
}
在我调用的模型类中:
public function getChAuthor(){
$modelUsr=TUsers::model()->findByPk($this->fk_authorid);
return $this->fk_authorid.', '.$modelUsr->ch_completeName;
}
一切都可以正常显示。我的主要问题是我想通过这个 cgridview 进行搜索,但我无法使用显示的值进行搜索。这是我的模型中包含的搜索功能:
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
//more criterias
$criteria->compare('fk_cip',$this->fk_cip,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
目前,我尝试了几件事,但没有任何效果,所以我将代码重置为初始状态。现在,如果我通过我的 cgridview 进行搜索,我只能使用authorid而不是我编写的完整列格式进行过滤。示例:
对于如下所示的一行:
3231,约翰·多伊
我只能搜索:
3231
我想搜索从函数创建的行。感谢您的帮助!