@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,
                    ]
                ]
            ],
...


В результате, ничего не фильтруется. Хотелось бы увидеть пример, как это должно выглядеть
  • Вопрос задан
  • 4451 просмотр
Пригласить эксперта
Ответы на вопрос 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". Дальнейшая фильтрация не отличается от любого другого поля.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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