Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Flash Веб-разработка на PHP

Работая на Хекслете вы не раз видели сообщение о результатах выполнения любого действия — будь то аутентификация, регистрация или вступление в курс.

Flash Message

В веб-разработке такое сообщение называют Flash. Оно обычно используется после перенаправления для индикации успешности или неудачи предыдущего действия. Flash-сообщения используют механизм сессий, который мы пока не рассматривали. Этот механизм позволяет хранить информацию между разными запросами одного и того же пользователя. В свою очередь механизм сессий работает благодаря кукам и встроен в PHP. Подробнее о сессиях мы поговорим в соответствующем уроке, а пока используем его без погружения.

Сначала установим необходимый пакет:

$ composer require slim/flash

Теперь подключим к проекту:

<?php

use DI\Container;
use Slim\Factory\AppFactory;

// Старт PHP сессии
session_start();

$container = new Container();
$container->set('renderer', function () {
    return new \Slim\Views\PhpRenderer(__DIR__ . '/../templates');
});
$container->set('flash', function () {
    return new \Slim\Flash\Messages();
});

AppFactory::setContainer($container);
$app = AppFactory::create();

$app->get('/foo', function ($req, $res) {
    // Добавление флеш-сообщения. Оно станет доступным на следующий HTTP-запрос.
    // 'success' — тип флеш-сообщения. Используется при выводе для форматирования.
    // Например можно ввести тип success и отражать его зелёным цветом (на Хекслете такого много)
    $this->get('flash')->addMessage('success', 'This is a message');

    return $res->withRedirect('/bar');
});

$app->get('/bar', function ($req, $res, $args) {
    // Извлечение flash сообщений установленных на предыдущем запросе
    $messages = $this->get('flash')->getMessages();
    print_r($messages); // => ['success' => ['This is a message']]

    $params = ['flash' => $messages];
    return $this->get('renderer')->render($res, 'bar.phtml', $params);
});

$app->run();

В многих фреймворках типы флеш-сообщений стандартизированы. В основном используют следующие:

  • success – для удачно завершившихся действий
  • warning – для предупреждений
  • error – в тех ситуациях когда произошла ошибка

Флеш-сообщения передаются в шаблон и там выводятся. После их извлечения хранилище обнуляется. При следующем запросе getMessages() вернёт пустой массив. Другими словами флеш сообщения показываются только на один запрос. После обновления страницы или перехода в другое место они пропадают. Это удобно, так как не нужно следить за их жизненным циклом.

Флеш-сообщений можно добавить сразу много, поэтому getMessages() возвращает вложенный массив такой структуры:

<?php

// $this->get('flash')->addMessage('success', 'first message');
// $this->get('flash')->addMessage('success', 'second message');
// $this->get('flash')->addMessage('error', 'first message');
// $this->get('flash')->addMessage('error', 'another message');

[
    'success' => [
        'first message',
        'second message',
    ],
    'error' => [
        'first message',
        'another message'
    ]
]

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


Самостоятельная работа

  1. Установите и подключите пакет для вывода флеш используя примеры из теории.
  2. Добавьте реализацию вывода флеш сообщения при создании пользователя.

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Для полного доступа к курсу нужна профессиональная подписка

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

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 120 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
29 сентября 8 месяцев

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»