Фильтрация в GridView с помощью DateRangePicker от kartik
-
- Сообщения: 82
- Зарегистрирован: 2015.02.04, 16:31
Фильтрация в GridView с помощью DateRangePicker от kartik
Здравствуйте. Использую фильтрацию в GridView с помощью DateRangePicker от kartik. Все работает замечательно, но не могу придумать как сделать сброс фильтра. Помогите, пожалуйста.
С уважением, Дмитрий.
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
Что именно не получается?
-
- Сообщения: 82
- Зарегистрирован: 2015.02.04, 16:31
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
После установки диапазона дат, происходит выборка данных. Как вернутся в первоначальное состояние (без фильтра по дате)?
Вот код
Вот код
Код: Выделить всё
[
'attribute' => 'date_report',
'format' => 'date',
'filter' => DateRangePicker::widget([
'model' => $searchModel,
'attribute' => 'date_report',
'convertFormat' => true,
'useWithAddon' => true,
'pluginOptions' => [
'format'=>'Y-m-d',
'locale' => [
'format' => 'd.m.Y',
'separator' => ' | ',
],
],
С уважением, Дмитрий.
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
Стереть диапазон и нажать Enter. Естественно в searchModel обработать ситуацию с пустым полем.
-
- Сообщения: 82
- Зарегистрирован: 2015.02.04, 16:31
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
Уточнение по коду -ddmitrenko писал(а): ↑2019.10.11, 13:58 После установки диапазона дат, происходит выборка данных. Как вернутся в первоначальное состояние (без фильтра по дате)?
Вот кодКод: Выделить всё
[ 'attribute' => 'date_report', 'format' => 'date', 'filter' => DateRangePicker::widget([ 'model' => $searchModel, 'attribute' => 'date_report', 'convertFormat' => true, 'useWithAddon' => true, 'pluginOptions' => [ 'format'=>'Y-m-d', 'locale' => [ 'format' => 'd.m.Y', 'separator' => ' | ', ], ],
Код: Выделить всё
[
'attribute' => 'date_report',
'format' => 'date',
'filter' => DateRangePicker::widget([
'model' => $searchModel,
'attribute' => 'date_report',
'convertFormat' => true,
'presetDropdown' => TRUE, !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'useWithAddon' => true,
'pluginOptions' => [
'format'=>'Y-m-d',
'locale' => [
'format' => 'd.m.Y',
'separator' => ' | ',
],
],
С уважением, Дмитрий.
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
Кто мешает установить presetDropdown в false?
-
- Сообщения: 82
- Зарегистрирован: 2015.02.04, 16:31
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
Ни кто, просто тогда функционал связанный с выпадающим окном отсутствует.
С уважением, Дмитрий.
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
Со встроенными диапазонами можно как-то такddmitrenko писал(а): ↑2019.10.11, 14:41Ни кто, просто тогда функционал связанный с выпадающим окном отсутствует.
Код: Выделить всё
[
'attribute' => 'date_report',
'format' => 'date',
'filter' => DateRangePicker::widget([
'model' => $searchModel,
'attribute' => 'date_report',
'convertFormat' => true,
'presetDropdown' => TRUE, !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'useWithAddon' => true,
'pluginOptions' => [
'format'=>'Y-m-d',
'locale' => [
'format' => 'd.m.Y',
'separator' => ' | ',
],
],
'pluginEvents' => [
"cancel.daterangepicker" => "function(ev, picker) {
var input = $(picker.element[0]).find('input');
hiddenInput = $(picker.element[0].nextElementSibling);
input.val('').change();
hiddenInput.val('').change();
}",
]
]
-
- Сообщения: 82
- Зарегистрирован: 2015.02.04, 16:31
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
Работает, спасибо, но есть одно но ... В этот фильтр по-умолчанию ставится текущая дата (и соответственно по-дефолту фильтруется по ней) и если в гриде есть другие фильтры, то их работа становится неоднозначной
С уважением, Дмитрий.
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
Это можно побороть только отанаследовавшись от виджета и в методе registerAssets убрать кодddmitrenko писал(а): ↑2019.10.11, 17:41 Работает, спасибо, но есть одно но ... В этот фильтр по-умолчанию ставится текущая дата (и соответственно по-дефолту фильтруется по ней) и если в гриде есть другие фильтры, то их работа становится неоднозначной
Код: Выделить всё
if ($this->presetDropdown && empty($this->value)) {
$js .= <<< JS
var val = {$nowFrom} + '{$this->_separator}' + {$nowTo};
{$id}.find('.range-value').val(val);
{$input}.val(val);
JS;
-
- Сообщения: 82
- Зарегистрирован: 2015.02.04, 16:31
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
Как ни пытался - ни как не получается поставить валидный диапазон при ИНИЦИАЛИЗАЦИИ модуля.
С уважением, Дмитрий.
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
Слабак))ddmitrenko писал(а): ↑2019.10.11, 19:16 Как ни пытался - ни как не получается поставить валидный диапазон при ИНИЦИАЛИЗАЦИИ модуля.
Код: Выделить всё
[
'attribute' => 'date_report',
'format' => 'date',
'filter' => DateRangePicker::widget([
'model' => $searchModel,
'attribute' => 'date_report',
'convertFormat' => true,
'presetDropdown' => TRUE, !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'useWithAddon' => true,
'options' => ['value' => empty($searchModel->date_report) ? '01.01.1970 - 01.01.2038' : $searchModel->date_report],
'pluginOptions' => [
'format'=>'Y-m-d',
'locale' => [
'format' => 'd.m.Y',
'separator' => ' | ',
],
],
'pluginEvents' => [
"cancel.daterangepicker" => "function(ev, picker) {
var input = $(picker.element[0]).find('input');
hiddenInput = $(picker.element[0].nextElementSibling);
input.val('01.01.1970 - 01.01.2038').change();
hiddenInput.val('01.01.1970 - 01.01.2038').change();
}",
]
]
-
- Сообщения: 82
- Зарегистрирован: 2015.02.04, 16:31
Re: Фильтрация в GridView с помощью DateRangePicker от kartik
Ну очень очевидно Спасибо
С уважением, Дмитрий.