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