Как добавить Yii2 datepicker, чтобы в столбце можно было выбрать дату, нажав эту дату в GridView - PullRequest
0 голосов
/ 22 марта 2019

По сути в заголовке тоже есть вопрос.Наткнулся в общем, как сделать фильтрацию по колонке, а не выбор конкретной даты.

1 Ответ

0 голосов
/ 23 марта 2019

установка. Получение пакета Composer:

php composer.phar require --prefer-dist yiisoft/yii2-jui

в поле зрения:

       echo \yii\jui\DatePicker::widget([
            'model' => $model,
            'attribute' => 'date',
            ]);

в модели (проверьте временную метку unix) - в БД указывается дата int или ..

    ['date', 'default', 'value' => null],
    ['date', 'date', 'timestampAttribute' => 'date'],

или

public function beforeValidate() {
     if ($this->date !== null) {
       $this->date= strtotime($this->date);
    }
    return parent::beforeValidate();
}

в фильтре Gridview (Поиск):

  [
     'attribute' => 'date',
     'filter' => \yii\jui\DatePicker::widget([
            'model'      => $searchModel,
            'attribute'  => 'date',
            'dateFormat' => 'php:Y-m-d',
            'options' => [
                'class' => 'form-control',
                'autocomplete' => 'off',
            ]
        ]),
    ],

в моделиПоиск:

public $date;

public function rules()
{
    return [
        [['date'], 'safe'],
        ['date', 'default', 'value' => null],
    ];
}
//...
        if ($this->date !== null) {
            $date = strtotime($this->date);
            $query->andFilterWhere(['between', 'date', $date, $date + 3600 * 24]);
        }

как ввод в GridView:

      [
        'label' => 'date',
        'value' => function ($model, $key, $index) {
            return  \yii\jui\DatePicker::widget([
            'model' => $model,
            'attribute' => 'date',
            ]);
        },
        'format' => 'raw'
      ],
...