Yii,自定义过滤器不起作用

时间:2015-04-09 01:36:14

标签: yii filter

我的自定义过滤器无效。任何人都可以纠正我吗?

在我的

public function actionAdmin($mid=null) {
    // the appropriate codes here... 

    $date = ">= ".date("Y-m-d");

    $this->render('admin', array(
        'model' => $model,
        'mid' => $mid,
        'date'=>$date,
    ));
}

在我的admin.php中,我在相应的字段中添加了这一行,在本例中为dateEnd

已更新

array(
        'name'=>'dateEnd',
        'htmlOptions'=>array('width'=>'150px'),
        'filter'=>array('0'=>'', '1'=>$date),
),

好的,这就是问题所在。无论我点击什么,它都不会过滤任何东西。我希望它过滤空白或今天的日期。

我可以知道我做错了什么吗?请随时纠正我。谢谢!

2 个答案:

答案 0 :(得分:0)

您无法访问cgridview 中传递的变量。为此,您可以在控制器中定义一个全局变量,并在cgridview中访问它,如下所示:

class Yourcontroller extends Controller {

    public $date;
    public function actionAdmin($mid=null) {
      // the appropriate codes here... 

      $this->date = ">= ".date("Y-m-d");

      $this->render('admin', array(
        'model' => $model,
        'mid' => $mid
      ));
   }
}

现在,您可以访问网格内的date

array(
    'name'=>'dateEnd',
    'htmlOptions'=>array('width'=>'150px'),
    'filter'=>array('0'=>'', '1'=>$this->date),
 ),

答案 1 :(得分:0)

更改此行:

'filter'=>array('0'=>'', '1'=>$date), 

到这一行:

'filter' => array(">= ".date("Y-m-d") => Yii::t('app', 'Still On Leave')),

基本上第一个参数是实际值,第二个部分是要显示的视图。

在第一行中,'1'=>$date表示1个值,但在CGridView的过滤器上显示$date字段。取值为1而不是$date字段。

将其视为HTML中的Select元素,其中包含以下行:

<select>
    <option value="1">One</option>
    <option value="2">Two</option>
</select>

Javascript基本上取值而不是显示的单词One

这是相同的解释。