我可以过滤任何字段,包括相关字段中的列,但我想知道如何过滤日期字段。
我遇到的一个解决方案是过滤器的日期选择器,我没有对此进行过测试,但我的要求差别不大。
例如,我在gridview中复制了datetime
列并将其格式化为
[
'attribute'=>'discharge_date',
'format'=>['DateTime','php:M']
],
这样该列只会显示几个月。该列正确显示月份。
现在我想按月在此列上进行过滤。 任何建议将不胜感激。 感谢。
我确实试过这个
[
'attribute'=>'discharge_date',
'value'=>'discharge_date',
'filter' => ['2015-01'=>'Jan','2015-02'=>'Feb','2015-03'=>'Mar'],
'format'=>['DateTime','php:M']
],
这很好用,但这里的年份是硬编码的,我不想要。 我知道这不是正确的方法。 感谢
答案 0 :(得分:5)
您可以使用kartik日期范围选择器:
1.检查出来:https://github.com/kartik-v/yii2-date-range
实施
1.在您的视图中:使用kartik \ daterange \ DateRangePicker;
2.如果您使用网格视图
在属性
中添加此代码[
'attribute'=>'Date',
'label'=>'Date',
'format'=>'text',
'filter'=> '<div class="drp-container input-group"><span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span>'.
DateRangePicker::widget([
'name' => 'ItemOrderSearch[created_at]',
'pluginOptions'=>[
'locale'=>[
'separator'=>'to',
],
'opens'=>'right'
]
]) . '</div>',
'content'=>function($data){
return Yii::$app->formatter->asDatetime($data['created_at'], "php:d-M-Y");
}
]
3.在Controller分析日期中选择日期,如
$date = explode( 'to', $item['date']) // Temporary store into variable as an array
// $date[0] => 12/07/2015 - from date
// $date[1] => 12/10/2015 - to date
4.将其传递给您的模型并执行查询。