Кто-то пользуется setFlash() ?
Как оно работает?
У меня почему-то ничего не получается.
Кто-то пользуется setFlash() ?
Как оно работает?
У меня почему-то ничего не получается.
Совсем ничего не получаться не может Что именно не работает?
Всё, что она делает - это заносит значение в переменную $_SESSION. Извлечь соответствующее значение можно при помощи getFlash().
пусто, совсем пусто)
код в примере не работает, сейчас еще разок продебажу.
после выполнения setFlash() в сессии лежит моя строка.
потом идет редирект и на следующей странице сессия совсем пустая, там просто ничего нет.
наверное это какой-то локальный глючек
флеш переменная живет в течении текущего и следующего запроса, затем уничтожается.
т.е. вы устанавливаете флеш-переменную, делаете один редирект, получаете её, а вот при следующем редиректе(переходе на другую страницу), её уже не будет существовать.
Если данные вам нужны в течении всей сессии пользователя, используйте setState
я знаю английский, вот только не знаю почему у меня для одного контроллера не работает вывод сохраненного в сессии сообщения (
У меня нормально работает. В контроллере или в модели делаю так:
public function afterSave() {
if ($this->sendToEmail()) {
Yii::app()->user->setFlash("CONTACT_EMAIL", t('CONTACT_EMAIL_SENT'));
} else {
Yii::app()->user->setFlash("CONTACT_EMAIL", t('CONTACT_EMAIL_NOT_SENT') . ' [' . $this->mailerErrorInfo . ']');
}
}
Потом в layout’е показываю сообщение:
<div id="content">
<?php if(Yii::app()->user->hasFlash('CONTACT_EMAIL')):?>
<div class="info" style="display:none;">
<?php echo Yii::app()->user->getFlash('CONTACT_EMAIL'); ?>
</div>
<?php
Yii::app()->clientScript->registerScript(
'myShowHideEffect',
'$(".info").slideDown("slow", function(){$(".info").animate({opacity: 1.0}, 5000).fadeOut("slow");});',
CClientScript::POS_READY
);
?>
<?php endif; ?>
...
Во всех вызовах setFlash / hasFlash / getFlash должен использоваться один и тот же идентификатор сообщения, в данном случае - CONTACT_EMAIL. Может в этом дело?
да нет, не в этом.
я просто использовал код с примера.
у меня в одном экшене почему-то нет этой информации. а в других есть.
ну это уже мелочь, позже поищу что за проблема с ним