php - Yii CGridView 使用大于/小于运算符进行搜索

标签 php yii

我正在尝试找到一种方法,在包含整数值的列中使用大于/小于运算符来过滤 CGridView 结果。 我可以使用“过滤器”参数吗?或者我需要在模型文件中创建一个新方法吗?

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'event-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns' => array(
        array(
            'name'=>'score_d_min',
            'header'=>'D',
            'value'=>'$data->score_d_min',
            'filter'=> , // not really sure what to put in here
        ),
    ),
));

最佳答案

您可以按照以下步骤实现此目标:

1- 将两个属性添加到您的模型

public $compare; //compare value
public $compareOp; //compare operator, for example [>,<,>=,<=]

2- 将以上安全属性添加到您的验证规则中

array('compare,compareOp,...', 'safe', 'on' => 'search'),

3- 在您的 GridView 中添加以下列

array(
        'name'=>'score_d_min',
        'header'=>'d',
        'value'=>'$data->score_d_min',
        'filter'=> CHtml::dropDownList('User[compareOp]', $model->compareOp,
        array('>'=>'>','<'=>'<','>='=>'>=','<='=>'<=','='=>'='),array('style'=>'width:50px;')) .
        CHtml::textField('User[compare]',$model->compare,array('style'=>'width:100px;'))
    ),    

4- 修改模型的 search()方法

$criteria->compare('score_d_min', $this->compareOp .$this->compare);

现在,您有如下所示的内容(图片看起来与您的不同,因为我正在测试用户表上测试它):

enter image description here

在图片中,它比较所需的列,如下所示:

column >= 2

结果(在我的机器中,我有 3 个用户,其用户 id 为 (1,2,3)。因此它只显示 id 为 2,3 的用户):

enter image description here

或者:

enter image description here

注释:

  • 我为 > 编写了代码, < , >= , <==运算符
  • 上面的代码只是一个工作示例。您可能需要对其进行自定义。

关于php - Yii CGridView 使用大于/小于运算符进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27532777/

相关文章:

java - "Run"HTMLUnit 与 PHP

php - 如何避免插入重复记录

dynamic - 使用Nginx将动态生成的文件作为静态文件提供

php - 使用 Yii 自动存储日期时间

php - 仅显示列值;不是 Yii 中的列名

php - YII CActiveRecord 连接运算符

php - 在 laravel blade 中查找 foreach 循环的最后一次迭代

php - 如何获取谷歌地图点?

javascript - 如何从 yii 中的 javascript 变量访问文本字段输入

php - yii : how to enable ajax if client insert space in textfield