Использую в своем проекте
kartik-v/yii2-date-range.
Возник вопрос, как его собственно использовать в GridView?
Пробовал так:
Search:...
public function behaviors()
{
return [
[
'class' => DateRangeBehavior::className(),
'attribute' => 'createTimeRange',
'dateStartAttribute' => 'createTimeStart',
'dateEndAttribute' => 'createTimeEnd',
]
];
}
public function rules()
{
return [
[['id', 'card_id', 'card_type_id', 'balance', 'created_at', /*'expires_at',*/
'corporative', 'barter', 'active', 'countNew', 'status'], 'integer'],
[['user_id'], 'safe'],
[['createTimeRange'], 'match', 'pattern' => '/^.+\s\-\s.+$/'],
];
}
public function search($params)
{
...
$query->andFilterWhere(['>=', 'expires_at', Date('Y-m-d 00:00:00', strtotime($this->createTimeStart))])
->andFilterWhere(['<', 'expires_at', Date('Y-m-d 00:00:00', strtotime($this->createTimeEnd))]);
...
}
...
View:
...
[
'attribute' => 'createTimeRange',
'value' => function ($model, $index, $widget) {
return date('Y-m-d', strtotime($model->expires_at));
},
//'format' => 'date',
'width' => '20%',
'filterType' => \kartik\grid\GridView::FILTER_DATE_RANGE,
'filterWidgetOptions' => [
'convertFormat' => false,
'presetDropdown' => true,
'pluginOptions' => [
'format' => 'Y-m-d',
'autoclose' => true,
]
]
],
...
В результате, ничего не фильтруется. Хотелось бы увидеть пример, как это должно выглядеть