我有一个列出表格内容的网格视图,表格有author_id
列。
现在我使用关系名称列语法author.username
显示用户名。
是否可以允许用户在列过滤器中输入用户名,并支持CJuiAutoComplete,一些示例提示?
我的代码示例:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->with('author')->search(),
'filter'=>$model,
'columns'=>array(
// ...
array(
'name'=>'author.username',
'filter'=> // ?
),
// ...
),
));
答案 0 :(得分:3)
小部件有一个第三个参数,可以设置为true,这意味着它将返回一个字符串,并且不会呈现小部件CJuiAutoComplete。
widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->with('author')->search(),
'filter'=>$model,
'columns'=>array(
// ...
array(
'name'=>'author.username',
'filter'=> $this->widget('zii.widgets.jui.CJuiAutoComplete', $array_params, true),
),
// ...
),
));
和$ array_params可以替换为以下ex:
array(
'name'=>'author_username',
//'model'=>$model,
'attribute'=>'city_eve',
'sourceUrl'=>"/controller/action/",
'options'=>array(
'minLength'=>'2',
),
'htmlOptions'=>array(
'size'=>'36'
),
)
并且您还必须在模型搜索方法中添加一些检查:
if($request->getQuery("author_username")){
$criteria->addCondition(author.username=:author_username");
$criteria->params[':author_username'] = $request->getQuery("author_username");
}