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-а глобальным.