loveorigami / yii2-notification-wrapper

Yii2-notification-wrapper module renders a message from session flash (with ajax, pjax support and etc.) through Growl, Noty, Toastr and more libraries
MIT License
77 stars 20 forks source link

Disable AJAX requests option not suppoterd #14

Closed mubat closed 7 years ago

mubat commented 7 years ago

Need to add some trigger to enable/disable ajax requests

loveorigami commented 7 years ago

Ok. How do you think do it?

loveorigami commented 7 years ago

@Mubat Чтоб понять, как лучше сделать, можешь привести пример, где нужно отключать вывод сообщений.

mubat commented 7 years ago

@loveorigami, например, я хотел бы использовать виджет вместо стандартного Yii-шного flash alert. И так получилось, что у нас есть виджет с оповещениями, который каждую минуту выполнял ajax запрос на сервер, который проверяет новые оповещения. И, получается, выполняется 2 запроса: который основной и сразу за ним следует запрос из этого виджета. Поэтому хотелось бы возможность отключить запросы в этом виджете.

loveorigami commented 7 years ago

Добавил настройку showNoty в ajax вызовах. Установи ее в false для отключения последующего запроса. Инструкция на главной. Если все нормально - сделаю релиз

mubat commented 7 years ago

@loveorigami не совсем то, что я имел ввиду (хотя эти изменения тоже имею место быть). Мне нужно просто отключить ajax запросы при генерации виджета. Код виджета:

echo \lo\modules\noty\Wrapper::widget([ // if need icon, class BootstrapNotify should be extended
     'layerClass' => 'lo\modules\noty\layers\BootstrapNotify',
     'options' => [
          'newest_on_top' => true,
          'delay' => 5000,
          'offset' => [
               'x' => 10,
               'y' => 70,
          ],
     ],
]);

Хорошо бы было иметь возможность указать параметр, например isAjax, = false чтобы не выполнялись ajax запросы (и если этот параметр = true, то только тогда выполнять registerJS())

loveorigami commented 7 years ago

Дописать не сложно, но при такой настройке виджета вывод noty вообще отключится. т.к. php сформирует скрипт, который будет запрещать любые вызовы noty-виджета. Тогда теряется смысл его использовавния.

Как сделал я, получается, на странице может быть несколько ajax вызовов (gridView, editable...,), a noty, например, нужно показать после удаления строки или сортировки.

mubat commented 7 years ago

Может я не правильно понял, но если отключить поддержку ajax, смысл виджета не изменится - выводить flash сообщения (так же описано в шапке репозитория, поправьте если не прав). Мне нужно полностью отключить ajax у виджета.

loveorigami commented 7 years ago

да, отключить можно, но флеши будут появляться только после перезагрузки страницы. А этот виджет расчитан на то, чтобы показывать сообщения после ajax операций над моделью при помощи js noty библиотек.

По сути - после отключения ajax ты получишь тот же самый yii-alert, только в обертке.

Как вариант - можешь написать свой Wrapper, отнаследовавшись от моего,, в котором оставить пустым registerJs() https://github.com/loveorigami/yii2-notification-wrapper/blob/master/src/Wrapper.php#L157

loveorigami commented 7 years ago

ну или добавить, как я предложил, в свой ajax скрипт

$.ajax({
        ...
        showNoty: false, // add this for disable notification
        success: function(data) {
        }
    });
mubat commented 7 years ago

да, отключить можно, но флеши будут появляться только после перезагрузки страницы.

Мне так и надо )

Как вариант - можешь написать свой Wrapper, отнаследовавшись от моего,

Сделал следующим образом:

use lo\modules\noty\Wrapper;

class WrapperWithoutAjax extends Wrapper
{

    public function init()
    {
        parent::init();
        $this->isAjax = false;
    }

    protected function registerJs() {}
}