我的自定义过滤器无效。任何人都可以纠正我吗?
在我的
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),
),
好的,这就是问题所在。无论我点击什么,它都不会过滤任何东西。我希望它过滤空白或今天的日期。
我可以知道我做错了什么吗?请随时纠正我。谢谢!
答案 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
。
这是相同的解释。