私は CGridView を持っていて、それを検索したいと思っています。問題は、モデルの関数によって変更される列があることです。すべては、次のような cgridview を含む search.php ビューから始まります。
$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
関数から作成した行を検索したい。ご協力ありがとうございました!