gridView и количество записей на странице
gridView и количество записей на странице
Кода никакого нету - опишу словами.
Используется обычный датапровайдер совместно с gridView (или даже listView). Хочу во вьюшке сделать настраиваемое количество записей на странице, например: Показывать по: 10, 20, 50, 100 элементов. В виде ссылок.
Не могу понять как это реализовать. Опишите текстом, если кто уже делал.
То есть разово в ссылке я бы мог ввести некоторый параметр page_size, и получить его из реквеста, подставив в датапровайдер. Но как его потом протягивать повсюду? Фильтры ведь передаются POST запросом. И как-то в пагинацию нужно добавлять этот параметр. А штука полезная ведь. Причем для сортировки линки сделали, а для вот такой штуки я не могу понять как. Заранее благодарен.
Используется обычный датапровайдер совместно с gridView (или даже listView). Хочу во вьюшке сделать настраиваемое количество записей на странице, например: Показывать по: 10, 20, 50, 100 элементов. В виде ссылок.
Не могу понять как это реализовать. Опишите текстом, если кто уже делал.
То есть разово в ссылке я бы мог ввести некоторый параметр page_size, и получить его из реквеста, подставив в датапровайдер. Но как его потом протягивать повсюду? Фильтры ведь передаются POST запросом. И как-то в пагинацию нужно добавлять этот параметр. А штука полезная ведь. Причем для сортировки линки сделали, а для вот такой штуки я не могу понять как. Заранее благодарен.
Осторожно! Вы общаетесь с новичком
Re: gridView и количество записей на странице
Недавно делал такую штуку.
Просто создаете ссылки c количеством записей и к ссылке с текущим url добавляется get параметр с необходимом количеством, а в методе searh() вашей модели читаете и указываете
Просто создаете ссылки c количеством записей и к ссылке с текущим url добавляется get параметр с необходимом количеством, а в методе searh() вашей модели читаете и указываете
Код: Выделить всё
$dataProvider->pagination->pageSize
Re: gridView и количество записей на странице
В провайдере повышаем предел:
и в представлении генерируем ссылки с использованием встроенного per-page::
Код: Выделить всё
'pagination' => [
'pageSizeLimit' => [1, 500],
],
Код: Выделить всё
Html::a(100, Url::current(['per-page' => 100]))
Re: gridView и количество записей на странице
Не знал о pageSizeLimit...Спасибо)ElisDN писал(а):В провайдере повышаем предел:
и в представлении генерируем ссылки с использованием встроенного per-page::Код: Выделить всё
'pagination' => [ 'pageSizeLimit' => [1, 500], ],
Код: Выделить всё
Html::a(100, Url::current(['per-page' => 100]))
Re: gridView и количество записей на странице
pageSizeLimit лишь включает ограничение, то есть как бы защита от +100500 сущностей на странице? Его можно и не указывать в данном случае?ElisDN писал(а):В провайдере повышаем предел:
и в представлении генерируем ссылки с использованием встроенного per-page::Код: Выделить всё
'pagination' => [ 'pageSizeLimit' => [1, 500], ],
Код: Выделить всё
Html::a(100, Url::current(['per-page' => 100]))
Осторожно! Вы общаетесь с новичком
Re: gridView и количество записей на странице
Да, ограничивает допустимый диапазон.girmate писал(а):pageSizeLimit лишь включает ограничение, то есть как бы защита от +100500 сущностей на странице?
Если не указать, то по умолчанию он равен [1, 50], поэтому срежет до 50.girmate писал(а):Его можно и не указывать в данном случае?
Re: gridView и количество записей на странице
Давно хотел спросить об этом свойстве pageSizeLimit, что вынудило его ввести в yii2?
Была большая статистика жалоб на слишком большие sizeLimit?
По идее ведь за установку обоих свойств (pageSizeLimit и sizeLimit) отвечает разработчик и если он хочет убить сервер тяжелым sql-запросом и огромной выборкой, то изменение двух свойств, а не одного - его не остановит.
Была большая статистика жалоб на слишком большие sizeLimit?
По идее ведь за установку обоих свойств (pageSizeLimit и sizeLimit) отвечает разработчик и если он хочет убить сервер тяжелым sql-запросом и огромной выборкой, то изменение двух свойств, а не одного - его не остановит.
Re: gridView и количество записей на странице
можно в урле указать per-page=1000000 и pageSizeLimit на стороне кода позволит ограничить в данном случае максимальный pageSize.Restlin писал(а):Давно хотел спросить об этом свойстве pageSizeLimit, что вынудило его ввести в yii2?
Была большая статистика жалоб на слишком большие sizeLimit?
По идее ведь за установку обоих свойств (pageSizeLimit и sizeLimit) отвечает разработчик и если он хочет убить сервер тяжелым sql-запросом и огромной выборкой, то изменение двух свойств, а не одного - его не остановит.
Re: gridView и количество записей на странице
Да, логично, спасибо.zelenin писал(а):можно в урле указать per-page=1000000 и pageSizeLimit на стороне кода позволит ограничить в данном случае максимальный pageSize.Restlin писал(а):Давно хотел спросить об этом свойстве pageSizeLimit, что вынудило его ввести в yii2?
Была большая статистика жалоб на слишком большие sizeLimit?
По идее ведь за установку обоих свойств (pageSizeLimit и sizeLimit) отвечает разработчик и если он хочет убить сервер тяжелым sql-запросом и огромной выборкой, то изменение двух свойств, а не одного - его не остановит.
Re: gridView и количество записей на странице
Как сделать не ссылку, а select-ом, 30, 50, 100 ?
Пишу социальную сеть заявок для фирм.
Re: gridView и количество записей на странице
Код: Выделить всё
<?php
$values = [15, 25, 50, 75, 100];
$current = $dataProvider->getPagination()->getPageSize();
?>
<select class="form-control" onchange="location = this.value;">
<?php foreach ($values as $value): ?>
<option value="<?= Html::encode(Url::current(['per-page' => $value, 'page' => null])) ?>" <?php if ($current == $value): ?>selected="selected"<?php endif; ?>><?= $value ?></option>
<?php endforeach; ?>
</select>
Re: gridView и количество записей на странице
Благодарю)ElisDN писал(а): ↑2018.01.28, 08:53Код: Выделить всё
<?php $values = [15, 25, 50, 75, 100]; $current = $dataProvider->getPagination()->getPageSize(); ?> <select class="form-control" onchange="location = this.value;"> <?php foreach ($values as $value): ?> <option value="<?= Html::encode(Url::current(['per-page' => $value, 'page' => null])) ?>" <?php if ($current == $value): ?>selected="selected"<?php endif; ?>><?= $value ?></option> <?php endforeach; ?> </select>
Пишу социальную сеть заявок для фирм.
Re: gridView и количество записей на странице
А может подскажете, как дополнить указанный селект ссылочкой "Все" с аналогичной названию логикой?
И вопрос о глобальной, вдруг найду ответ, почему этим фукционалом на владеет summary? Это я к тому, что может я просто чего то не знаю
И вопрос о глобальной, вдруг найду ответ, почему этим фукционалом на владеет summary? Это я к тому, что может я просто чего то не знаю