Ув. форумчане подскажите как заставить работать pagination через POST а не GET запрос
Код: Выделить всё
\yii\widgets\LinkPager::widget(['pagination' => $pages,]);
Код: Выделить всё
\yii\widgets\LinkPager::widget(['pagination' => $pages,]);
Код: Выделить всё
'linkOptions' => ['data-method' => 'post']
после добавления изменилась только ссылка, добавилось data-method="post", так же через GET отправляетandrei.obuhovski писал(а):попробуй:Код: Выделить всё
'linkOptions' => ['data-method' => 'post']
Надо переопределить Paginator вот здесь:cooper.baggi писал(а):Доброго времени суток.
Ув. форумчане подскажите как заставить работать pagination через POST а не GET запросЗаранее спасибо.Код: Выделить всё
\yii\widgets\LinkPager::widget(['pagination' => $pages,]);
Я так понял он все пагинаторы переопределит?irpsv писал(а):Надо переопределить Paginator вот здесь:cooper.baggi писал(а):Доброго времени суток.
Ув. форумчане подскажите как заставить работать pagination через POST а не GET запросЗаранее спасибо.Код: Выделить всё
\yii\widgets\LinkPager::widget(['pagination' => $pages,]);
https://github.com/yiisoft/yii2/blob/ma ... n.php#L263
Ну по идее вам нужно создать свой пагинатор, где вы переопределите данный метод и потом уже где надо его подключать:cooper.baggi писал(а): Я так понял он все пагинаторы переопределит?
Мне просто не одном месте необходимо. Данные подгружаются и на них пагинация нужна
Код: Выделить всё
\yii\widgets\LinkPager::widget(['pagination' => new app\ext\UserPagination($config)]);
Код: Выделить всё
class UserPagination extends \yii\data\Pagination {
public function createUrl($page, $pageSize = null, $absolute = false)
{
$this->params = $_POST;
return parent::createUrl($page,$pageSize,$absolute);
}
protected function getQueryParam($name, $defaultValue = null)
{
$this->params = $_POST;
return parent::getQueryParam($name,$defaultValue);
}
}
Должно POST отправлять. Покажите заголовки запроса.cooper.baggi писал(а):после добавления изменилась только ссылка, добавилось data-method="post", так же через GET отправляетandrei.obuhovski писал(а):попробуй:Код: Выделить всё
'linkOptions' => ['data-method' => 'post']
Данные отправляются POST'ом, вот только пагинатор считывает данные из QueryStringandrei.obuhovski писал(а):Должно POST отправлять. Покажите заголовки запроса.cooper.baggi писал(а):после добавления изменилась только ссылка, добавилось data-method="post", так же через GET отправляетandrei.obuhovski писал(а):попробуй:Код: Выделить всё
'linkOptions' => ['data-method' => 'post']
Не понял, что именно показатьandrei.obuhovski писал(а):Покажите заголовки запроса.
Код: Выделить всё
<?php
declare(strict_types=1);
namespace app\widgets\postLinkPager;
use app\widgets\postLinkPager\assets\PostLinkPagerAsset;
use yii\base\InvalidConfigException;
use yii\widgets\LinkPager;
/**
*/
class PostLinkPager extends LinkPager
{
/**
* @inheritDoc
*/
public function init(): void
{
parent::init();
PostLinkPagerAsset::register($this->view);
// .. здесь может быть еще ваши необходимые добавки
}
}
Код: Выделить всё
$(document).ready(function () {
$('.pagination .page-link').click(function (event) {
event.preventDefault();
const url = $(this).attr('href');
const urlParams = new URLSearchParams(url.split('?')[1]); // Получаем параметры из URL
const page = urlParams.get('page');
const perPage = urlParams.get('per-page');
// Тут берете или создаёте новую форму
const form = $(`#${formId}`);
// Заполняете ее текущими фильтрами.....
form.append(`<input type="hidden" name="page" value="${page}">`);
form.append(`<input type="hidden" name="per-page" value="${perPage}">`);
form.submit();
});
});
Код: Выделить всё
GridView::begin([
//.....
'pager' => [
'class' => PostLinkPager::class,
'pagination' => $dataProvider->pagination,
],
//.....