Задать вопрос
@XenK

Yii2-date-range пример использования в GridView?

Использую в своем проекте 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,
                    ]
                ]
            ],
...


В результате, ничего не фильтруется. Хотелось бы увидеть пример, как это должно выглядеть
  • Вопрос задан
  • 4490 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
В самом GridView использовать можно так:
[
             'attribute' => 'created_at',
             'format' => 'datetime',
             'filter' => DatePicker::widget([
                'model' => $searchModel,
                'attribute' => 'date_from',
                'attribute2' => 'date_to',
                'type' => DatePicker::TYPE_RANGE,
                'separator' => '-',
                'pluginOptions' => ['format' => 'yyyy-mm-dd']
             ])
            ],
Ответ написан
Комментировать
@BorisKorobkov
Web developer
При чем тут DateRangeBehavior?

Примеров использования DateRangePicker полно на demos.krajee.com/date-range#usage . В частности, для фильтрации удобнее использовать пример "Advanced configuration using separate start and end attributes to store information". Дальнейшая фильтрация не отличается от любого другого поля.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы