Оповещения Bootstrap в Laravel

Apr 11, 03:56 am Категория:   Комментарии

Если долго смотреть в админку сайта, то можно превратиться в блогера. Потекут из-под пальцев тексты глубокого смысла, слетятся на них почитатели таланта писательского и жизнь станет совсем исключительной. Правда админку сначала нужно написать. А состоит она, как оказалось, из кучи второстепенных фишек, натыканных вокруг формы публикации. Лично я решил начать собирать эти фишки с алертов: сообщений, предупреждений и прочего интерактива. В используемом мной Bootstrap есть готовые их версии на чистом CSS и проскриптованные. Совершил действие – получил реакцию. И главное – просто и без всякий выпрыгивающих модальных окон. Хотя и с ними тоже можно.

Алерты и прочие оповещения совсем не рокет сайенс, но без них теряется связь с приложением и приходится только догадываться, что там произошло, записался ли файл, нет ли проблем с загрузкой фото и т.п. Вроде работает, но как-то некомфортно. Поэтому все фреймворки по фронтенду предлагают соответствующие сниппеты. И для получения полноценных оповещений остаётся лишь формировать информативные сообщения в контроллере и отображать их в представлении. А чтобы не париться по поводу программирования этой функциональности в каждом новом проекте, нужно подключать готовые пакеты и добавлять несколько строк в blade-шаблоны. А так же взять за правило формировать сами сообщения по факту производства активностей.

С пакетами всё просто: можно написать свой или использовать чужой. Готовых пакетов для алертов много. Мне за последнее время попалась пара: vinkla/alert и laracasts/flash. Я начну свои эксперименты со второго пакета. Если не пойдёт или что-то не понравится, попробую первый. Если и с первым ничего не выйдет, то напишу свой. А скорее всего, я всё перепробую и напишу свой, но начну таки с laracasts/flash. И начало это, как принято в Laravel, состоит из команды

composer require laracasts/flash

которая пакет установит. После установки, по традиции, редактирую файл config/app.php и делаю две вставки

'providers' => [
     ...
    Laracasts\Flash\FlashServiceProvider::class,
];
'aliases' => [
    ...
    'Flash' => Laracasts\Flash\Flash::class,
];

Практически всё. Теперь в шаблонах blade необходимо в нужном месте вставить одну строчку.

@include('flash::message')

Всё, можно применять. Для этого можно использовать фасад, алиас которого я прописал в файле конфигурации, либо функцию-хэлпер:

     // Хотим сообщить об ошибке с помощью фасада
     Flash::error('Что-то пошло не так!');
    // Используем хэлпер для сообщение об успехе
     flash()->success('Всё отлично получилось.');

Доступно 5 видов сообщений:

  • Flash::info(‘Сообщение для вывода информации’)
  • Flash::success(‘Сообщение об успешном производстве действия’)
  • Flash::error(‘Сообщение об ошибке’)
  • Flash::warning(‘Предупреждение’)
  • Flash::overlay(‘Сообщение для вывода в модальном окне’, ‘Заголовок окна’)

Текст сообщения и его тип в виде значений ключей flash_notification.message и flash_notification.level сохранятся в сессии и будут извлечены при создании страницы. Если вставка в шаблоне для этого пакета есть, то всё должно произойти само собой. Ручная обработка сообщений, что может потребоваться при использовании не Bootstrap, а чего-нибудь другого, производится довольно просто:

@if (Session::has('flash_notification.message'))
    
{{ Session::get('flash_notification.message') }}
@endif

Что на русский можно перевести как “Если есть сообщение в сессии, то будем его транслировать в соответствии с заданным уровнем тревожности”. Скобочки и буковки в этом коде расставить по вкусу в соответствии с используемыми инструментами. И лучше сохранить код в виде всё того же blade шаблона и вставлять его куда надо.

Если для алертов используются модальные окна, то нужно после подключения библиотек jQuery.js и Bootstrap.js добавить такой скрипт:


Вот кажется и всё.

Психанул. Одностраничник на Laravel.

Apr 2, 09:06 pm Категория:   Комментарии

Ещё раз прошёлся по близлежащим интернетам с целью изучения примеров сайтов на Laravel. Искал варианты с исходниками, разумеется. Всё что нашёл не выдерживает никакой критики. Либо только админка времени выхода первого айфона, либо клиентской части вообще нет, а то и просто набор вьюх без базы данных из серии “я и моё любимое животное (я справа)”. И тогда я решил сделать сайт с нуля. С сассами, бутстрепами и ещё какой-нибудь нежностью. Пусть даже всего из одной страницы.

Весь текст статьи

Евроремонт по-ларавельски

Mar 26, 08:41 am Категория:   Комментарии

Каждый фреймворк имеет раздел типа “Быстрый старт”. В этом разделе в духе “3 клика, 2 минуты, готовый результат” рассказывается о том, как просто и быстро можно начать пользоваться их замечательным продуктом. И это правда. Но только про первую дозу, которая, как все знают, бесплатна. А потом уже не соскочить и приходится платить. Временем, деньгами, нервами и… В общем – платить. В публикации по выбору фреймворка для фронтенда набежал нехилый список дополнений, делающих интеграцию, разработку и внешний вид более лучшими. Уточню.

Весь текст статьи

Bootstrap, Foundation и другие мимимишки

Mar 22, 10:42 pm Категория:   Комментарии

Первые тесты фреймворков семейства Laravel показали, что Google хочет от вебмастера мобильной версии сайта. Бета Я.Вебмастера, несмотря на разницу в цифрах с основной версией сервиса, тоже настаивает на мобилизации. Аргументация бронебойная: в мобильной выдаче поиска нет смысла показывать неадаптированные сайты. Правда, есть один нюанс в этой самой адаптации, заключающийся в том, что вёрстка в деле мобилизации находится на 9-м месте, а то и дальше. Но сейчас не об идеологии, а о технологии мобилизации. Как её добиться?

Весь текст статьи

Организация базы данных: Миграции

Mar 20, 11:10 pm Категория:   Комментарии

После всех отступлений и других телодвижений я опять добрался до базы, мать их, данных. В небольшой статье, посвящённой анализу базы Textpattern я вплотную подошёл к проектированию базы данных нового сайта на Laravel. Чтобы наше шоу не продлилось вечно, я напомню о том, что Laravel – это фремворк для веб-ремесленников. А значит, что главное результат, а не теория. Поэтому буду краток. Если получится.

Весь текст статьи