Как работать с флеш-сообщениями (flash-messages) в Yii

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

Flash-сообщения в Yii (flash-messages) позволяют передавать некоторый текстовый контент из контроллера в отображение. Подразумеваются короткие системные сообщения, например, об успешном сохранении данных или отправке формы. После того, как сообщение будет выведено на странице оно удаляется. Понятие "флеш-сообщение" никак не связано с технологие Flash от Adobe! Yii (flash-messages) работают с помощью сессий (хранятся в $_SESSION).

Мы можем передавать несколько различных сообщений, которые будут отображаться в различных местах на странице, но для этого каждому message мы должны присвоить свой уникальный идентификатор – «ключ».

Например, передать сообщение о том, что логин был неверным, мы можем следующим образом:
Yii::app()->user->setFlash('error', "Логин не    существует!");

Данная строчка должна идти в действии контроллера до вызова отображения.

В самом отображении мы проверяем, существует ли сообщение с ключом «error» и, если существует, выводим его. Для этого мы используем методы hasFlash() и
getFlash():

<?php if(Yii::app()->user->hasFlash('error')):?>
	<span  class="error_message">
		<?php echo Yii::app()->user->getFlash('error'); ?>
	</span>
<?php endif; ?>

Если нам нужно передать вместе с сообщением об ошибке также еще какие-то другие сообщения, то передаем их, используя свои «ключи»:
Yii::app()->user->setFlash('error', "Логин не  существует!");
Yii::app()->user->setFlash('my_name',  "Иван");
Yii::app()->user->setFlash('message3', "Это третье сообщение");

В отображении мы можем также сохранить все переданные сообщения в массив и затем вывести их из него. Для сохранения сообщений в массив используем getFlashes():

$allMessages = Yii::app()->user->getFlashes();
if ($allMessages) {
	foreach($allMessages as $key => $message) {
  		echo  '<span>' . $key.': '.$message . '</span>';
	}
}
Теги:
флеш-сообщения, flash-messages
Добавлено: 03 Апреля 2018 22:40:32 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...