Yii2:使用 kartik 日期范围选择器在 gridview 中进行过滤
我正在尝试在 gridview 中使用 Kartik 日期范围选择器进行过滤.
我有一列 date_time 字段作为 discharge_date
,小部件在 gridview 中显示良好,但过滤根本不起作用.
这是我在 Gridview 中的代码:
<预><代码>['属性'='放电日期','值'=>'放电日期','过滤器类型' =>GridView::FILTER_DATE_RANGE,'filterWidgetOptions' =>(['模型'=>$模型,'属性'='放电日期','presetDropdown'=>TRUE,'convertFormat'=>真,'插件选项'=>['格式'=>'Y-m-d','打开'==>'左']])],我哪里出错了?
解决方案您需要解析 Search 模型中的放电日期过滤器值.作为示例,以下代码将采用过滤器值并将其拆分为破折号,并将 $start_date 和 $end_date 添加到 $query 字符串中(即在 if (!$this->validate()) 之后添加它){):
if ( !is_null($this->discharge_date) && strpos($this->discharge_date, ' - ') !== false ) {列表($start_date,$end_date)=explode(' - ',$this->discharge_date);$query->andFilterWhere(['between', 'data_date', $start_date, $end_date]);$this->discharge_date = null;}
I am trying to use the Kartik Date Range picker for filter in gridview.
I have a column date_time field as discharge_date
, the widget is showing fine in the gridview but the filtering is not working at all.
This is my code in the Gridview:
[
'attribute'=>'discharge_date',
'value'=>'discharge_date',
'filterType' => GridView::FILTER_DATE_RANGE,
'filterWidgetOptions' =>([
'model'=>$model,
'attribute'=>'discharge_date',
'presetDropdown'=>TRUE,
'convertFormat'=>true,
'pluginOptions'=>[
'format'=>'Y-m-d',
'opens'=>'left'
]
])
],
Where I am going wrong?
解决方案You need to parse the discharge_date filter value in your Search model. As an example the following code will take the filter value and split it on the dash and add the $start_date and $end_date to the $query string (i.e. add it after if (!$this->validate()) {):
if ( ! is_null($this->discharge_date) && strpos($this->discharge_date, ' - ') !== false ) {
list($start_date, $end_date) = explode(' - ', $this->discharge_date);
$query->andFilterWhere(['between', 'data_date', $start_date, $end_date]);
$this->discharge_date = null;
}
相关文章