loveorigami/yii2-notification-wrapper This module for renders a message from session flash (with ajax, pjax support and etc.)

modulealertnotificationflashgrowltoastrsweetalertnotynotyjsnotyfypnotyfynotific8lobiboxtoast

Yii2-notification-wrapper

Latest Stable Version Total Downloads Monthly Downloads Daily Downloads License

Yii2-notification-wrapper module renders a message from session flash (with ajax support). All flash messages are displayed in the sequence they were assigned using setFlash.

"Demo"

You can set message as following:

public function actionIndex(){
    ...
     Yii::$app->session->setFlash('error',   'noty error');
     Yii::$app->session->setFlash('info',    'noty info');
     Yii::$app->session->setFlash('success', 'noty success');
     Yii::$app->session->setFlash('warning', 'noty warning');
    ...
     return $this->render('index');
 }

 // or in ajax action

 public function actionAjax(){
     ...
     Yii::$app->session->setFlash('error',   'ajax error');
     Yii::$app->session->setFlash('info',    'ajax info');
     Yii::$app->session->setFlash('success', 'ajax success');
     Yii::$app->session->setFlash('warning', 'ajax warning');
     ...
     $data = 'Some data to be returned in response to ajax request';
     Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
     return $data;
  }

Installation

The preferred way to install this extension is through composer.

To install with bower package for one of supported layers, either run

$ php composer.phar require loveorigami/yii2-notification-wrapper "*"
# if you want use it
$ php composer.phar require bower-asset/noty "^2.3"
$ php composer.phar require bower-asset/jquery-growl "^1.3" 

or add

"loveorigami/yii2-notification-wrapper": "*",
"bower-asset/noty": "^2.3",
"bower-asset/jquery-growl": "^1.3"

to the require section of your composer.json file.

Configure application

Let's start with defining module in our config file (@common/config/main.php):

'modules' => [
    'noty' => [
        'class' => 'lo\modules\noty\Module',
    ],
],

That's all, now you have module installed and configured.

Usage

This package comes with a Wrapper widget that can be used to regularly poll the server for new notifications and trigger them visually using either Noty (or Toastr, or Growl etc.).

This widget should be used in your main layout file as follows:

use lo\modules\noty\Wrapper;

// for Bootstrap Alert
echo Wrapper::widget();

// or for Growl
echo Wrapper::widget([
    'layerClass' => 'lo\modules\noty\layers\Growl',
]);

// or for Noty
echo Wrapper::widget([
    'layerClass' => 'lo\modules\noty\layers\Noty',
]);

Advanced usage

Every layer may be customizable from parameter options in the widget. For more information - read documentation.

use lo\modules\noty\Wrapper;

echo Wrapper::widget([
    'layerClass' => 'lo\modules\noty\layers\Noty',
    'layerOptions'=>[
        // for every layer (by default)
        'layerId' => 'noty-layer',
        'customTitleDelimiter' => '|',
        'overrideSystemConfirm' => true,
        'showTitle' => true,

        // for custom layer
        'registerAnimateCss' => true,
        'registerButtonsCss' => true
    ],

    // clientOptions
    'options' => [
        'dismissQueue' => true,
        'layout' => 'topRight',
        'timeout' => 3000,
        'theme' => 'relax',

        // and more for this library...
    ],
]);

Some libraries can override System Confirm for links as:

<a href="https://github.com" data-confirm="Are you sure?">Go!</a>

Custom title

If you want change notification title, you can use customTitleDelimiter in our messages

    echo  Wrapper::widget([
        'layerClass' => '...',
        'layerOptions' => [
            'customTitleDelimiter' = '|', // by default
        ],
    ]);

and set message in action as

public function actionIndex(){
    ...
     Yii::$app->session->setFlash('success', 'CUSTOM TITLE | noty success');
    ...
 }

Layer Id

If you want paste notification message in custom div, you can use layerId. For example:

// In layout:
    $layerParams = [
        'layerClass' => '...',
        'layerOptions' => [
            ...
        ],
    ];

    if (isset($this->params['layerParams']){
        $layerParams = \yii\helpers\ArrayHelper::merge($layerParams, $this->params['layerParams']);
    }
    echo  Wrapper::widget($layerParams);

// In view:
    $this->params['layerParams'] = [
        'layerClass' => 'lo\modules\noty\layers\Alert',
        'layerOptions' => [
            'layerId' => 'my-noty-id',
        ],
    ];

    echo '<div id="my-noty-id"></div>'; // and notification will be placed here

Disable showNoty after ajax calls

  • In Ajax script

    $.ajax({
        method: 'GET',
        dataType: 'json',
        url: someresouceurl,
        showNoty: false, // add this for disable notification
        success: function(data) {
        }
    });
  • In Pjax

    Pjax::begin([
        'clientOptions' => [
            'showNoty' => false
        ]
    ]); 
    ... pjax container ...
    Pjax::end(); 

Noty Exceptions

For example:

use lo\modules\noty\exceptions\NotyFlashException;
use lo\modules\noty\exceptions\NotyErrorException;

public function actionUpdate($id)
{
    $model = $this->findModel($id);

    try {
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        } else {
            return $this->render('update', [
                'model' => $model,
            ]);
        }
    } catch (NotyFlashException $e) {
        $e->catchFlash();
    }
}

protected function findModel($id)
{
    if (($model = Post::findOne($id)) !== null) {
        return $model;
    } else {
        throw new NotyErrorException('The requested page does not exist.');
    }
}

Supported layers

Currently supported layers are:

Library (Layer) Bower Confirm Project homepage Docs
Bootstrap Alert - - http://getbootstrap.com/components/#alerts read
Bootstrap Notify remarkable-bootstrap-notify - https://github.com/mouse0270/bootstrap-notify read
Growl jquery-growl - https://github.com/ksylvest/jquery-growl read
iGrowl igrowl - https://github.com/catc/iGrowl read
jQuery Notify jquery.notify - https://github.com/CreativeDream/jquery.notify read
jQuery Notify Bar jqnotifybar - https://github.com/dknight/jQuery-Notify-bar read
jQuery Toaster jquery.toaster - https://github.com/scottoffen/jquery.toaster read
jQuery Toast Plugin jquery-toast-plugin - https://github.com/kamranahmedse/jquery-toast-plugin read
Lobibox lobibox + https://github.com/arboshiki/lobibox read
Notie notie + https://github.com/jaredreich/notie read
Notific8 notific8 - https://github.com/ralivue/notific8 read
NotifIt notifit + https://github.com/naoxink/notifIt read
Notify.js notifyjs - https://github.com/notifyjs/notifyjs read
Noty noty + https://github.com/needim/noty read
PNotify pnotify + https://github.com/sciactive/pnotify read
Sweetalert sweetalert + https://github.com/t4t5/sweetalert read
Toastr toastr - https://github.com/CodeSeven/toastr read

Full installation

Add

"loveorigami/yii2-notification-wrapper": "*",
"bower-asset/bootstrap-sweetalert": "^1.0",
"bower-asset/igrowl": "*",
"bower-asset/jqnotifybar": "^1.5",
"bower-asset/jquery-growl": "^1.3",
"bower-asset/jquery.notify": "^1.0",
"bower-asset/jquery-toast-plugin": "*",
"bower-asset/jquery.toaster": "*",
"bower-asset/lobibox": "*",
"bower-asset/notie": "^3.2",
"bower-asset/notifit": "^1.1",
"bower-asset/notific8": "^3.5",
"bower-asset/notifyjs": "^0.4",
"bower-asset/pnotify": "^3.0",
"bower-asset/noty": "^2.3",
"bower-asset/remarkable-bootstrap-notify": "^3.1",
"bower-asset/sweetalert": "^1.1",
"bower-asset/toastr": "^2.1"

to the require section of your composer.json file.

License

Yii2-notification-wrapper is released under the MIT License. See the bundled https://github.com/loveorigami/yii2-notification-wrapper/blob/master/LICENSE.md for details.

Changelog

CHANGELOG

  • 6.7.2 [4 July 2018]

    • enh Translation for Vietnamese
  • 6.7.1 [28 February 2018]

    • fix Yii 2.0.14 support
  • 6.7 [15 December 2017]

    • fix Show noty only after POST ajax AND GET pjax calls
  • 6.6 [18 October 2017]

    • enh Add german translation
  • 6.5 [19 September 2017]

    • fix Show noty only after POST ajax calls
  • 6.4 [03 May 2017]

    • enh Disable global events
  • 6.3 [03 Jenuary 2017]

    • enh Noty Exceptions
  • 6.2 [19 December 2016]

    • enh Disable ajax calls
    • enh Jquery Toast Plugin layer
    • enh Jquery Toastr layer
  • 6.1 [23 October 2016]

    • enh Bootstrap Notify layer
  • 6.0 [22 October 2016]

    • enh showTitle property
    • enh layerId property for placed notification in target id
  • 5.7 [24 August 2016]

    • fix supported types
  • 5.6 [25 July 2016]

    • enh iGrowl layer
    • enh JqueryNotifyBar layer
    • fix new default options in NotifIt layer
  • 5.5 [24 July 2016]

    • enh Sweetalert layer
  • 5.4 [16 July 2016]

    • enh Lobibox layer
  • 5.3 [16 July 2016]

    • enh Remove const WRAP_ID and add property layerId
  • 5.2 [15 July 2016]

    • enh Default options for all layers
    • fix Remove default style in growl layer
  • 5.1 [14 July 2016]

    • enh Custom title for all layers
  • 5.0 [13 July 2016]

    • fix New namespace
  • 4.1 [11 July 2016]

    • enh Added new layer Notific8
    • fix Replace AjaxSuccess to AjaxComplete
  • 4.0 [3 July 2016]

    • enh Added new layer Notie
    • enh Custom title for Growl layer
    • enh All layers extends from base Layer class
    • enh 'customTitleDelimiter' and 'overrideSystemConfirm' moved to 'layerOptions'
  • 3.1 [2 April 2016]

    • enh Added new layer NotifIt
  • 3.0 [31 March 2016]

    • enh Added overriding system confirm (Noty, PNotify)
  • 2.3 [30 March 2016]

    • enh Added new layer - PNotify
    • enh Added new layer - Jquery Notify
    • fix Fixed translations
  • 2.2 [29 March 2016]

    • enh Added new layer - Noty.js
  • 2.1 [28 March 2016]

    • enh Added new default layer Alert
  • 2.0 [26 March 2016]

    • enh Added new entity "Layers".
    • enh Delete widgets from composer.
  • 1.1 [22 March 2016]

    • enh Rename Noty to Wrapper. First stable release
  • 1.0 [21 March 2016]

    • fix Refactoring #1 (@SilverFire)
    • enh Noty widget

Statistics

Downloads
GitHub Stars
GitHub Forks

Releases

  • 6.7.231 March 2016
  • 6.7.131 March 2016
  • 6.731 March 2016
  • 6.631 March 2016
  • 6.531 March 2016
  • 6.431 March 2016
  • 6.331 March 2016
  • 6.231 March 2016
  • 6.131 March 2016
  • 6.031 March 2016
  • 5.731 March 2016
  • 5.631 March 2016
  • 5.531 March 2016
  • 5.331 March 2016
  • 5.231 March 2016
  • 5.131 March 2016
  • 5.031 March 2016
  • 3.031 March 2016
  • 2.220 March 2016
  • 1.020 March 2016

Comments



6.7.2 is the latest of 20 releases



MIT license
Stats
79 github stars & 20 github forks
52 downloads in the last day
1482 downloads in the last 30 days
169314 total downloads