我正在尝试使用Yii呈现CGridView小部件,尽管表格正确,但它不包含过滤器输入。
视图中的我的窗口小部件代码如下:
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'awesomeGrid',
'dataProvider'=>$model->search(),
'enableSorting'=>true,
'filter'=>$model,
'columns'=>array(
/*array('name'=>'Check',
'value'=>'CHtml::checkBox("name",true)',
'type'=>'raw',
'htmlOptions'=>array('width'=>5),
),*/
array(
'header'=>'Prueba_Columna',
'name'=>'OBJECT_TYPE',
'value'=>'$data->OBJECT_TYPE',
'filter'=>$model->getFilter(),
'type' => 'raw'),
)
));
?>
我的模特是:
public function search(){
$criteria=new CDbCriteria;
$criteria->select='OBJECT_TYPE';
return new CActiveDataProvider($this,array(
'criteria'=>$criteria,
'pagination'=>array('pageSize'=>20)
));
}
public function getFilter(){
$criteria=new CDbCriteria;
$criteria->compare('OBJECT_TYPE',$this->OBJECT_TYPE,true);
return new CActiveDataProvider($this,array(
'criteria'=>$criteria,
));
}
我的控制员:
public function actionIndex()
{
$appUsersModel = new AppUsers(); //Instance the model object
$objectsListModel = new ObjectsList('search');
$objectsUserModel = new ObjectUser();
$appsArray = $this->getApps($appUsersModel);
$projectsArray = $this->getProjects($objectsListModel);
$usersArray = array(array());
$typesArray = array(array());
$objectsArray = array(array());
// renders the view file 'protected/views/security/index.php'
// using the default layout 'protected/views/layouts/main.php'
$this->render('index',
array('appsArray' => $appsArray,
'usersArray' => $usersArray,
'projectsArray' => $projectsArray,
'typesArray' => $typesArray,
'objectsArray' => $objectsArray,
'appUsersModel' => $appUsersModel,
'objectsUserModel' => $objectsUserModel,
'model'=>$objectsListModel,
)
);
}
当我访问firefox上的开发人员工具并检查HTML是否正确时,我会看到以下内容:
<div id="awesomeGrid" class="grid-view">
<div class="summary">Displaying 1-20 of 2432 results.</div>
<table class="items">
<thead>
<tr>
<th id="awesomeGrid_c0"><a class="sort-link" href="/apps/project_name/web/index.php/security/index?ObjectsList_sort=OBJECT_TYPE">Prueba_Columna</a></th></tr>
<tr class="filters">
<td></td></tr>
</thead>
<tbody>
<tr class="odd">
<td>VIEW</td></tr>
<tr class="even">
<td>VIEW</td></tr>
</table>
</div>
正如您所看到的那样,<tr class="filters"><td></td></tr>
标记有var previousValue = 0
@IBAction func onStepperValueChangedAction(sender: UIStepper) {
if sender.value > previousValue {
increaseValue()
} else {
decreaseValue()
}
previousValue = sender.value
}
标记,但不存在要过滤的输入标记。然后我认为小部件是属性配置的,但也许有一些错误导致输入没有显示。
任何人都可以帮助我吗?
谢谢。
答案 0 :(得分:0)
过滤器应为array
。你检查过getFilter()
的输出了吗?它似乎没有返回array
。这就是为什么你没有得到过滤器的原因。尝试查看function
答案 1 :(得分:0)
最后我得到了一个解决方案,因为我告诉你我正在使用Yii,但是我没有使用Gii生成模型,因此规则功能是空的。
我在该函数上定义了一个返回数组,使该字段能够被搜索。
代码是:
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('OBJECT_TYPE', 'safe', 'on'=>'search'),
);
}
感谢所有人的回复。