unwrecker
@unwrecker

Как заставить paginator в yii2 работать через POST?

Есть страничка с TreeViewInput, найденными результатами и пагинатором под ними. Всё обёрнуто в pjax. Через GET работало нормально, но по длине иногда не проходило. Переделал на POST. Но теперь пагинатор при переходе между страницами тупо сбрасывает все фильтры.

В документации к пагинатору про post ни слова. Ну действительно это не самый правильный вариант, но что делать?
  • Вопрос задан
  • 567 просмотров
Пригласить эксперта
Ответы на вопрос 1
unwrecker
@unwrecker Автор вопроса
Всё-таки оказалось что мне это не нужно. Ура!

Длина GET запроса получалась слишком большой из-за бага (или фичи) pjax при ручном вызове pjax.reload — вместо замены значения параметра он заново дописывался в конец URLа. Помогло использование опции «replace: false», которая вообще-то должна и так быть false по умолчанию, и по логике её надо в true переводить, однако ж помогло...

Может кому пригодится следующий код. Это автосабмит для TreeViewInput::widget

$this->registerJs('
  $("document").ready(function(){
    $("#filter_tree").on("change", function() {
      $.pjax.reload("#list", {
        method: "GET",
        data: {service:$(this).val()},
        replace: false})
    })
  });
');


Где: filter_tree - id виджета, #list - id обновляемого pjax блока, service - GET-параметр в который ставится значение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы