Прелоадер в pjax

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Леонид
Сообщения: 54
Зарегистрирован: 2017.01.05, 00:20

Прелоадер в pjax

Сообщение Леонид »

Здравствуйте адепты, ide и дебагера

Вопрос по сабжу, я плохо знаю натив js, так как добавить прелоадер в pjax?

Ответ типа 'учи js' не подходят, нужно очень срочно)))

Заранее спасибо!!!)))
alexnew2000
Сообщения: 104
Зарегистрирован: 2015.10.04, 09:47

Re: Прелоадер в pjax

Сообщение alexnew2000 »

Леонид писал(а):Здравствуйте адепты, ide и дебагера

Вопрос по сабжу, я плохо знаю натив js, так как добавить прелоадер в pjax?

Ответ типа 'учи js' не подходят, нужно очень срочно)))

Заранее спасибо!!!)))
Вообще есть вариант отказаться от pajax и написать на голом ajaxe с Jquery. Pjax зачастую с ума сходит при внутренних редиректах.
Вот прелоадер.
http://ftask.ru/2016/12/07/%D0%B4%D0%BE ... %BE%D1%81/

Либо вешаем прелоадер на келбек , после срабатывания Pajax .
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Прелоадер в pjax

Сообщение Onotole »

alexnew2000 писал(а):
Леонид писал(а):Здравствуйте адепты, ide и дебагера

Вопрос по сабжу, я плохо знаю натив js, так как добавить прелоадер в pjax?

Ответ типа 'учи js' не подходят, нужно очень срочно)))

Заранее спасибо!!!)))
Вообще есть вариант отказаться от pajax и написать на голом ajaxe с Jquery. Pjax зачастую с ума сходит при внутренних редиректах.
Вот прелоадер.
http://ftask.ru/2016/12/07/%D0%B4%D0%BE ... %BE%D1%81/

Либо вешаем прелоадер на келбек , после срабатывания Pajax .
Pjax делает ровно то, что ему говорят делать. Он не может сходить с ума. Если вы получаете от него не то, что ожидали, значит вы что-то не так сделали
Леонид
Сообщения: 54
Зарегистрирован: 2017.01.05, 00:20

Re: Прелоадер в pjax

Сообщение Леонид »

Онотоле. Спасибо, нашёл где вставлять (файл в папке vendor), но после того, как выйдет версия новая pjax, этот файл ведь обновится, как отнаследоваться или есть ещё пути что бы после каждого обнова не править этот файл? Хоть там и всего две строки вставлять, но хотелось бы по фэншую,

alexnew2000. Хотелось бы штатными методами, мои требования полностью покрываются пиджаком, единственное при реге идёт инициализация большого количества моделей (запись в базу дефолтных данных), поэтому не хватало только прелоадера ))
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Прелоадер в pjax

Сообщение Onotole »

Леонид писал(а):Онотоле. Спасибо, нашёл где вставлять (файл в папке vendor), но после того, как выйдет версия новая pjax, этот файл ведь обновится, как отнаследоваться или есть ещё пути что бы после каждого обнова не править этот файл? Хоть там и всего две строки вставлять, но хотелось бы по фэншую,

alexnew2000. Хотелось бы штатными методами, мои требования полностью покрываются пиджаком, единственное при реге идёт инициализация большого количества моделей (запись в базу дефолтных данных), поэтому не хватало только прелоадера ))
Эм... Что ты там правил?
alexnew2000
Сообщения: 104
Зарегистрирован: 2015.10.04, 09:47

Re: Прелоадер в pjax

Сообщение alexnew2000 »

Леонид писал(а):....

alexnew2000. Хотелось бы штатными методами, мои требования полностью покрываются пиджаком, единственное при реге идёт инициализация большого количества моделей (запись в базу дефолтных данных), поэтому не хватало только прелоадера ))
Вверху тебе уже сбрасывали ссылку на документацию, повторю тут https://github.com/defunkt/jquery-pjax#events. По идее какой то из этих кодов должен сработать после срабатывания pajax.
Это вроде и есть келбек:

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

$(document).on('pjax:send', function() {
  alert('1');
})
$(document).on('pjax:complete', function() {
  alert('2');
})
Для начала выведи alert по которому определишь, что ты привязался к событию pjaxa.
Править внутренности в vendor не надо!!! вставить в любою js
alexnew2000
Сообщения: 104
Зарегистрирован: 2015.10.04, 09:47

Re: Прелоадер в pjax

Сообщение alexnew2000 »

Леонид писал(а): Хотелось бы штатными методами,
еще тут глянь http://stackoverflow.com/questions/2167 ... s-function
Леонид
Сообщения: 54
Зарегистрирован: 2017.01.05, 00:20

Re: Прелоадер в pjax

Сообщение Леонид »

Onotole писал(а):
Леонид писал(а):Онотоле. Спасибо, нашёл где вставлять (файл в папке vendor), но после того, как выйдет версия новая pjax, этот файл ведь обновится, как отнаследоваться или есть ещё пути что бы после каждого обнова не править этот файл? Хоть там и всего две строки вставлять, но хотелось бы по фэншую,

alexnew2000. Хотелось бы штатными методами, мои требования полностью покрываются пиджаком, единственное при реге идёт инициализация большого количества моделей (запись в базу дефолтных данных), поэтому не хватало только прелоадера ))
Эм... Что ты там правил?
В beforesend вставил отображение гифки в success скрытие гифки
Леонид
Сообщения: 54
Зарегистрирован: 2017.01.05, 00:20

Re: Прелоадер в pjax

Сообщение Леонид »

alexnew2000 писал(а):
Леонид писал(а):....

alexnew2000. Хотелось бы штатными методами, мои требования полностью покрываются пиджаком, единственное при реге идёт инициализация большого количества моделей (запись в базу дефолтных данных), поэтому не хватало только прелоадера ))
Вверху тебе уже сбрасывали ссылку на документацию, повторю тут https://github.com/defunkt/jquery-pjax#events. По идее какой то из этих кодов должен сработать после срабатывания pajax.
Это вроде и есть келбек:

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

$(document).on('pjax:send', function() {
  alert('1');
})
$(document).on('pjax:complete', function() {
  alert('2');
})
 
Для начала выведи alert по которому определишь, что ты привязался к событию pjaxa.
Править внутренности в vendor не надо!!! вставить в любою js
Спасибо, то, что доктор прописал )))
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Прелоадер в pjax

Сообщение Onotole »

Леонид писал(а):
Onotole писал(а):
Леонид писал(а):Онотоле. Спасибо, нашёл где вставлять (файл в папке vendor), но после того, как выйдет версия новая pjax, этот файл ведь обновится, как отнаследоваться или есть ещё пути что бы после каждого обнова не править этот файл? Хоть там и всего две строки вставлять, но хотелось бы по фэншую,

alexnew2000. Хотелось бы штатными методами, мои требования полностью покрываются пиджаком, единственное при реге идёт инициализация большого количества моделей (запись в базу дефолтных данных), поэтому не хватало только прелоадера ))
Эм... Что ты там правил?
В beforesend вставил отображение гифки в success скрытие гифки
Зачем? о_О Это же событие, на которое можно подписаться где угодно
Леонид
Сообщения: 54
Зарегистрирован: 2017.01.05, 00:20

Re: Прелоадер в pjax

Сообщение Леонид »

Onotole писал(а): 2017.01.08, 11:32
Леонид писал(а):
Onotole писал(а): Эм... Что ты там правил?
В beforesend вставил отображение гифки в success скрытие гифки
Зачем? о_О Это же событие, на которое можно подписаться где угодно
Ну вот такой я кодер))) Если в пхп ещё более менее разбираюсь, то js для меня дремучий лес)
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Прелоадер в pjax

Сообщение Alexum »

Леонид писал(а): 2017.01.09, 00:56
Onotole писал(а): 2017.01.08, 11:32
Леонид писал(а):
В beforesend вставил отображение гифки в success скрытие гифки
Зачем? о_О Это же событие, на которое можно подписаться где угодно
Ну вот такой я кодер))) Если в пхп ещё более менее разбираюсь, то js для меня дремучий лес)
Очень плохая идея что-то править в каталоге vendor. Ваши js файлы помещайте в каталоге web/js/ и регистрируйте в массиве $js в assets/AppAsset.php. Менее популярный вариант - JS-код поместить в код самого view:

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

<?php
$script = <<< JS
...
JS;
$this->registerJs($script);
?>
Что касается анимации обновления, лично я пользуюсь простенькой js-библиотекой waitMe https://github.com/vadimsva/waitMe

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

// Отображаем лоадер при загрузке pjax
$(document).on('pjax:start', function() {
            $('body').waitMe({
                effect: 'ios',
                bg: 'rgba(0,0,0,0)',
                color: '#FFF'
            });
});

// Скрываем лоадер
$(document).on('pjax:end', function() {
    $('body').waitMe('hide');
});
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Прелоадер в pjax

Сообщение rugabarbo »

Если хочется что-то поправить в папке venodor, то нужно клонировать редактируемый репозиторий, затем поправить его и подключить вместо оригинального. При очень большом желании сделать pull request в оригинальную репку. После этого вам ментейнеры надают по башке, отклонят PR, и подскажут, как сделать правильно, ничего не исправляя в оригинальной библиотеке.

Есть ещё второй вариант (чуть короче): прислушаться к тому, что говорят на форуме (чтобы не влезать в вендор).

Есть третий (самый длинный): на всех забить и ждать, что будет. А когда всё сломается, вернуться к вариантам 1 и 2.
Леонид
Сообщения: 54
Зарегистрирован: 2017.01.05, 00:20

Re: Прелоадер в pjax

Сообщение Леонид »

Про вендор понятно, это не по фэншую, про это написал выше, заюзал варик alexnew2000)) Ваш варик тоже попробую ))) Спасибо!!!

rugabarbo, это понятно, читайте пожалуйста следующий раз с самого начала))) А то масло маслянное )) Я как бы знаю что в вендор что то править можно но не нужно и это отписал выше ))) в контексте всего треда, ваш пост выглядит не очень адекватно, без обид ;)
Леонид
Сообщения: 54
Зарегистрирован: 2017.01.05, 00:20

Re: Прелоадер в pjax

Сообщение Леонид »

У меня есть некоторое количество чисто аякс, без пиджака. Вопрос, как на ajax такое повесить?

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

$(document).on('pjax:send', function() {
  alert('1');
})
$(document).on('pjax:complete', function() {
  alert('2');
})
так не работает(((

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

$(document).on('ajax:beforeSend', function() {
  alert('1');
})
$(document).on('ajax:complete', function() {
  alert('2');
})
Леонид
Сообщения: 54
Зарегистрирован: 2017.01.05, 00:20

Re: Прелоадер в pjax

Сообщение Леонид »

Если кому то понадобится то лучше написать не так

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

    $(document).on('pjax:send', function() {
        $('#preloaderLoad').fadeIn();
    });
    $(document).on('pjax:success', function() {
        $('#preloaderLoad').fadeOut();
    });
а так

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

    $(document).ajaxSend(function() {
        $('#preloaderLoad').fadeIn();
    });
    $(document).ajaxSuccess(function() {
        $('#preloaderLoad').fadeOut();
    });

в такой конструкции перехватывается вообще любой аякс запрос
Ответить