Codeigniter Notify

в 23:12, , рубрики: codeigniter, метки:

Доброй ночи, читатели.
Хотел бы поделиться с вами самодельнрой библиотекой для codeigniter под названием Notify.
Она создана для вывода сообщений пользователю.

Совсем чуть-чуть истории

Библиотеке немного больше полугода. В своем первом представлении она была еще хелпером и для самописной crm которую я тогда писал.
Позже перешел на codeigniter и перетащил ее за собой.
С тех пор тяну из проекта в проект. Меня устраивает, может быть кому-то тоже будет полезна.

Совсем чуть-чуть описания

Повторюсь, что библиотека создана для вывода сообщений пользователю.
Базовые стили и необходимые js-скрипты включены прямо в текст php файла. Сделано это для собственного удобства.
В зависимости от того, асинхронно ли запрошена страница или нет, ответ будет записан в сессию, или возвращен в формате json.
Можно вернуть одно сообщение или очередь. Сообщения могут быть разнотипными.
Можно вставить сообщения в очередь и сделать редирект, а можно вставить их в очередь перед загрузкой view, и они будут показаны тут же. Идентично выглядят сообщения, добавленные javascript'ом, как разобранные из ответа сервера, так и добавленные напрямую из js-кода.
Можно передать с ответом данные или адрес перенаправления.

Установка

  1. Скачайте codeigniter-notify-library с github
  2. В составе библиотеки два файла, один пойдет в папку /application/config, второй в /application/libraries/
  3. Подключите библиотеку через autoload.php или напрямую в контроллере через load->library
  4. После этого и змените основной/основные views
<html>
	<head>
		...
		<?=$this->notify->initJsCss()?> <!--Эта инициализация - не единственный методподключения, но самый быстрый-->
	</head>
	<body>
		<?=$this->notify->getMessages()?><!--Здесь вывод всех сообщений-->
		...
	</body>
</html>
Пример использования в php:

	function some_action()
	{
		if ($result)
		{
			$this->notify->error('Часть данных не сохранена');
			$this->notify->setData( json_encode(array('sum_count' => 4)) );
			$this->notify->returnSuccess('Функция отработала');
		}
		else
			$this->notify->returnError('Случилась какая-то ошибка');
	}
Пример использования в js:

$.post(url,form_data,function(data)
	{
		var json = $.parseJSON(data);
		
		if (notifyIsSuccess(json))
		{
			$(".sum").text(json.data.sum_count);
			notifySuccess('Запись суммы прошла успешно');
		}
		
		notify(json); // выведет очередь сообщений, если таковые есть
		
	});
Основные методы

        // добавление ошибки в очередь
		$this->notify->error('Случилась какая-то ошибка'); // php
		notifyError('Случилась еще одна ошибка'); // js
	
	// добавление успешного сообщения в очередь
		$this->notify->success('Но основную часть мы выполнили'); // php
		notifySuccess('И это действие тоже успешно'); // js
	
	// присоединим данные к ответу
	// из javascript он будет доступен через объект data в ответе
		$this->notify->setData( json_encode(array('item' => 'value')) );
	
	// в случае синхронного запроса, на этот адрес произойдет редирект из php,
	// в случае асинхронного будет сменен window.location
		$this->notify->setComeback( site_url() );
	
	// этот метод завершит дальнейшее выполнение скрипта
		$this->notify->returnNotify();

Комментарии, плюсы, минусы, форки — буду рад любой реакции.
Спасибо.

Для тех кто ищет ссылки на скачивание внизу поста:
Скачать с github

Автор: Anton_Gorodezkiy

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js