Flash - параметры (параметры запоминаемые на 1 переход)

Зависимости

  • Нет зависимостей

Так называют временные параметры которые требуется единоразово при переходе на следущую страницу. Приведу пример:

Информационные сообщения

Скажем у вас есть 2 страницы: список пользователей (users) и страничка добавляение пользователя (add_user). Так вот вы хотите организовать следущий вид работы, человек переходит на страницу add_user вписывает все данные и нажимает кнопку добавить, вы выполняете код по добавлению пользоватля после чего перенаправляете его на страницу пользователей где он может увидеть своего юзера. Но при этом хочется как-то сообщить ему что вы добавили пользователя - например через сообщение выше таблицы пользователей.
Вот тут и приходят на помощь флеш-параметры, а именно, мы в коде добавления пользователя создаем флеш параметр с сообщением вида "Пользователь Такой-то успешно добавлен" далее в коде странички users мы выводим это сообщение, причем этот параметр удалиться если человек обновиться, т.е. у нас будут одноразовые информационные сообщения.

Простой пример работы

Вы можете скачать этот пример или просто посмотреть его код, он не сложен:

<?php

    // Подключение либ лучше вынести в lib/init.php
    require_once dirname(__FILE__) . "/lib/FlashParam.php"; // На сайте лучше использовать BASEPATH

    // Код в котором происходит записть флеш-параметра (src-file)
    $flashParam = new FlashParam();
    if (Post('is_add'))
    {
        $flashParam->Set('msg', MsgOk("Hello world!"));
        header("Location: " . GetCurUrl()); // Переходим на ту страницу где работает с этим параметром
        exit();
    }


    // Шаблон по выводу параметра я совместил с формой которая переводит на код который добавляет флеш параметр
?>
    <head>
        <link rel="stylesheet" type="text/css" href="<?= Root('i/css/dev/button.css')?>" />
    </head>


    <div style="margin: 130px 0; text-align: center;">
        <?= $flashParam->Get('msg')?> <!-- Замечу что если параметра msg вообще не будет то вернётся false а не ошибка потому делаем не волнуемся -->
        <form action="<?= GetCurUrl()?>" method="post">
            <input type="hidden" name="is_add" value="1">
            <input type="submit" value="Записать флеш-параметр и обратно редиректнуться суда же" class="button">
        </form>
    </div>

Запоминание прошлого uri-а у пользователя

Так же я бы хотел продемонстрировать класс при помоши которого вы можете запоминать страницу на которой ваш пользователь был до этого.

<?php

    /**
     * Класс для запомининия прошло url
     *
     * @author Zmi
     */
    class BackUrl
    {
        public $flashParam; // Я знаю что public плохо, но мне все равно

        public function __construct()
        {
            $this->flashParam = new FlashParam();
        }

        public function __destruct()
        {
            $this->flashParam->Set('back_url', GetCurUrl());
        }
    };
?>

Вы ее так же сможете найти в архиве, а прошлый url можно получить как обычной flash-параметр который лежит пупбличным экземпляров в BackUrl.
Важно что бы ваш BackUrl уничножился в конце скрипта, этого можно добиться сделав экземпляр BackUrl-а глобальным.