Уведомления на сайте PHP + Noty.js V3

       PHP      php    notification    ООП      313    
PHP: Динамические уведомления на сайте с Noty.js

Про использование библиотеки Noty.js я писал здесь. На самом деле мне она очень понравилась своей простотой и практичностью.

В связи с этим, я решил немного кастомизировать её под свои нужды. Я собираюсь использовать её в php проектах и никакого лишнего кода JavaScript мне там не нужно.

Подключение к проекту Noty.js я здесь не буду описывать, по ссылке выше всё уже расписано.

Класс для работы с библиотекой Noty.js

Мы не будем использовать всё API библиотеки. Возьмём только основные настройки, тем самым обеспечим базовую работоспособность уведомлений. Если нужны более глубокие настройки, никто не мешает дописать нужный функционал ☺

<?
/**
 * https://ned.im/noty/#/
 * https://github.com/needim/noty
 * https://daneden.github.io/animate.css/
 * A Dependency-free notification library
 * Class Noty
 */
class Noty
{
  /**
   * @param $type
   * @param $text
   * @param $timeout
   * @param $layout
   */
  public static function run($type, $text, $timeout, $layout)
  {
    echo '
    <script>
    new Noty({
      type: '."\"$type\"".',
      text: '."\"$text\"".',
      timeout: '."\"$timeout\"".',
      layout: '."\"$layout\"".',            
      theme: "semanticui", 
      animation: {
        open: "animated bounceInRight", 
        close: "animated bounceOutRight"
      }
    }).show();
    </script>';
  }
}
  • $type - тип уведомления
  • $text - текст сообщения может быть html кодом или строкой
  • $timeout - задержка перед закрытием уведомления. Установите false для липких уведомлений
  • $layout - позиция уведомления

Использовать класс можно так, например:

$message = $_GET['message'] ?? null;

if(!$message):
  /**
   * Если значение аргумента не передавать,
   * то сработает значение по умолчанию
   * https://ned.im/noty/#/options
   */
   Noty::run('','Message does not exist', false, 'bottomRight');
else:
   Noty::run('success', $message, 3000, 'topRight');
endif;

// Или где-то в контроллере
public function actionSignUp()
{
  /* @var $user User */
  try {
    $user->signup();
    Noty::run('success','User registration was successful!', 3000, 'topRight');
  } catch (Exception $e) {
    Noty::run('error',$e->getMessage(), 3000, 'topRight');
  }
}

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

Комментарии временно оключены

Поиск

Популярное