Как реализовать стандартный блок для изменения количества товара с помощью плагина Pjax?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Maksim86
Сообщения: 16
Зарегистрирован: 2019.05.02, 10:15

Как реализовать стандартный блок для изменения количества товара с помощью плагина Pjax?

Сообщение Maksim86 » 2019.11.18, 01:08

Всем привет! Стоит задача, как реализовать стандартный блок <- текст +> для изменения количества товара с помощью плагина Pjax. Для простого js я нашёл решение, но для того, чтобы сделать подобное с jquery.pjax.js мне не хватает информации, т.е. я понимаю, что pjax - это плагин JQuery, знаю как формировать ссылки в контроллере, но для реализации, к примеру, уменьшения или увеличения числа, вводимого в поле input, передача в контроллер не имеет смысла, стало быть требуется использовать $.pjax.click. У меня сложность с тем, что из-за отсутствия подробного описания, я не понимаю, как мне реализовать эту задачу с помощью этого плагина? Если кто поделится ссылкой на более-менее исчерпывающую информацию ну или живые примеры с синтаксисом типа $.pjax.click - буду очень признателен

unknownby
Сообщения: 34
Зарегистрирован: 2019.11.05, 16:34

Re: Как реализовать стандартный блок для изменения количества товара с помощью плагина Pjax?

Сообщение unknownby » 2019.11.18, 09:50

У тебя есть вывод товаров через GridView и ты хочешь менять количество выдаваемых товаров на странице?
Если так, то у тебя в модели поиска должно быть что-то типо такого. Тут константа ROWNUM = 20, в твоем случае передаешь параметр с формы (того же _search.php), обновляется GridView при помощи Pjax и вуаля :D

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

$dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pageSize' => self::ROWNUM,
            ],
            'sort' => ['defaultOrder' => ['myfield' => SORT_ASC]],
        ]);

yiiliveext
Сообщения: 496
Зарегистрирован: 2019.08.13, 01:49

Re: Как реализовать стандартный блок для изменения количества товара с помощью плагина Pjax?

Сообщение yiiliveext » 2019.11.18, 11:06

Вам не нужен pjax, поскольку state (адресная строка) у вас не меняется. Используйте ajax, с его помощью и экономней по ресурсам выйдет.

Maksim86
Сообщения: 16
Зарегистрирован: 2019.05.02, 10:15

Re: Как реализовать стандартный блок для изменения количества товара с помощью плагина Pjax?

Сообщение Maksim86 » 2019.11.18, 12:15

Похоже меня ни кто не понял: заходим в корзину с выбранными товарами -> выводятся товары списком и напротив каждого из них есть блок с двумя кнопками и полем input посередине: [-]количество этого товара[+]
С помощью ajax я такое сделал, но сейчас задача сделать то же но при помощи плагина pjax и в поисках теории я нашёл такой синтаксис
<script>
if ($.support.pjax) {
$(document).on('click', 'a[data-pjax]', function(event) {
var container = $(this).closest('[data-pjax-container]')
var containerSelector = '#' + container.id
$.pjax.click(event, {container: containerSelector})
})
}
</script>
но я не понимаю, как его заточить под мою задачу. Делаю магазин в первый раз и толком не знаю как люди поступают, но хотел бы отработать все варианты. В общем мне не хватает информации и примеров именно со скриптами, в которых применяется именно плагин pjax( то есть без захода в контроллер). Может кто разбирается, любая помощь - буду вам благодарен

yiiliveext
Сообщения: 496
Зарегистрирован: 2019.08.13, 01:49

Re: Как реализовать стандартный блок для изменения количества товара с помощью плагина Pjax?

Сообщение yiiliveext » 2019.11.18, 13:21

Похоже это вы не понимаете что такое pjax.
pjax = ajax + push state
У вас в корзине нет надобности в push state, поэтому у вас остается только ajax. Зачем же вы тащите туда pjax?
Ваш функционал реализуется ajax запросами в конроллер корзины, который возвращает обратно статус (успех/ошибка) и в случае успеха обновленные данные по корзине (сумма по строке, общая сумма), а в случае ошибки возвращает текст ошибки. Далее с помощью js устанавливаются изменившиеся данные в html корзины или выбрасывается ошибка.

Ответить