Как мне сделать поиск записей в grid по дате в формате dd.mm.yyyy?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
hollanditkzn
Сообщения: 95
Зарегистрирован: 2017.03.28, 17:37

Как мне сделать поиск записей в grid по дате в формате dd.mm.yyyy?

Сообщение hollanditkzn »

Использую 2 виджета

Код: Выделить всё

"kartik-v/yii2-widgets": "^3.4",
 "kartik-v/yii2-field-range": "^1.3"
Но в таком формате даты yyyy-mm-dd она записи нормально выводит от поиска, в таком формате dd.mm.yyyy ничего вообще не происходит. Указывается в ajax что 200 код и нет никаких ошибок.
Моя реализация в UserSearch

Код: Выделить всё

<?php
....
class UserSearch extends User
{
    public $nameEmployee;
    public $date_from;
    public $date_to;
  
    public function rules()
    {
        return [
            ...
            [['date_from', 'date_to'], 'date', 'format' => 'php:Y-m-d']
        ];
    }
    public function scenarios()
    {
        return Model::scenarios();
    }
    public function search($params)
    {
        $query = User::find()->where(['active' => User::WORK]);

        // add conditions that should always apply here

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);
...

        $query->andFilterWhere(['like', 'username', $this->username])
            ...
/** Вот тут должно конвертировать в любом случае что пришло в таком формате 2017-09-10 что пришло в таком формате 10.09.2017, верно же? она все равно будет в unix формате */
            ->andFilterWhere(['>=', 'created_at', $this->date_from ? strtotime($this->date_from.' 00:00:00') : null])
            ->andFilterWhere(['<=', 'created_at', $this->date_to ? strtotime($this->date_to.' 23:59:59') : null]);

        return $dataProvider;
    }
}
И в gridview

Код: Выделить всё

[
                    'filter' => DatePicker::widget([
                        'model' => $searchModel,
                        'attribute' => 'date_from',
                        'attribute2' => 'date_to',
                        'type' => DatePicker::TYPE_RANGE,
                        'separator' => '-',
                        'pluginOptions' => ['format' => 'dd.mm.yyyy'],
                    ]),
                    'attribute' => 'created_at',
                    'format' => 'datetime',
                    'label' => 'Дата приема'
                ],
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Как мне сделать поиск записей в grid по дате в формате dd.mm.yyyy?

Сообщение Nex-Otaku »

hollanditkzn писал(а): 2018.02.20, 10:25 /** Вот тут должно конвертировать в любом случае что пришло в таком формате 2017-09-10 что пришло в таком формате 10.09.2017, верно же? она все равно будет в unix формате */
Кто вам сказал? Явно указывайте формат и преобразовывайте.
hollanditkzn
Сообщения: 95
Зарегистрирован: 2017.03.28, 17:37

Re: Как мне сделать поиск записей в grid по дате в формате dd.mm.yyyy?

Сообщение hollanditkzn »

Не совсем понял, явно указывать формат. Я же его указываю
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как мне сделать поиск записей в grid по дате в формате dd.mm.yyyy?

Сообщение andku83 »

http://php.net/manual/ru/function.strtotime.php
Замечание:

Даты в формате m/d/y или d-m-y разрешают неоднозначность с помощью анализа разделителей их элементов: если разделителем является слеш (/), то дата интерпретируется в американском формате m/d/y, если же разделителем является дефис (-) или точка (.), то подразумевается использование европейского формата d-m-y.

Чтобы избежать потенциальной неоднозначности, рекомендуется использовать даты в формате стандарта ISO 8601 (YYYY-MM-DD), либо пользоваться функцией DateTime::createFromFormat() там, где это возможно.
и для точного понимания происходящего заглядывайте в результирующий SQL-запрос
hollanditkzn
Сообщения: 95
Зарегистрирован: 2017.03.28, 17:37

Re: Как мне сделать поиск записей в grid по дате в формате dd.mm.yyyy?

Сообщение hollanditkzn »

Нашел ответ, я забыл что у меня в таком формате делает валидация и поэтому валидация не проходила у меня
Закрыто