Проблемы с getFlash и setFlash в Yii - PullRequest
0 голосов
/ 02 ноября 2010

Хорошо, я знаю, что то, что я собираюсь сказать, будет очень расплывчатым, но выслушайте меня:

Я хочу использовать флеш-сообщения, потому что мне нравится их идея, но они неЭто, кажется, всегда работает для меня.

Вот мой рабочий процесс:

  1. Пользователь создает группу на странице A
  2. Я отправляю уведомление по электронной почте членамновая группа
  3. Я установил флэш-сообщение «Успех!»
  4. Я перенаправил пользователя во вновь созданную группу и отобразил «Успех!»флэш-сообщение.

Проблема в том, что после того, как я перенаправил пользователя, флэш-сообщения больше не находятся в $ _SESSION.Чтобы сделать это еще более странным, если я выберу шаг, на котором я отправляю уведомления по электронной почте, он работает.WTF?

Кто-нибудь еще испытывал подобные проблемы с флеш-сообщениями?У кого-нибудь есть понимание того, почему отправка электронного письма может повлиять на флэш-сообщения?

Думаю, на данный момент я просто собираюсь придерживаться setState и вручную удалять его после отображения.

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

Теперь вы можете установить для свойства autoUpdateFlash компонента CWebUser значение false.В этом случае флэш-сообщение будет удалено только после использования.

1 голос
/ 02 ноября 2010

Как отправляется электронное письмо?Я знаю, что при использовании расширения Yii Mail (я думаю, обертки swiftmailer) в режиме «отладки» используется метод setFlash, так что, возможно, это как-то стирает массив…?

Переменные «flash» обновляютсяметод init () CWebUser, так что если есть дополнительный вызов CWebUser, возможно, именно это очищает флэш-переменные.

Учитывая, что вы установили вспышку ПОСЛЕ электронного письма, я не уверен, как это произойдет.Мое единственное другое предположение, кроме «режима отладки» (не проблема, если вы просто используете почтовые методы PHP), заключается в том, что отправка почты вызывает дополнительное перенаправление куда-то.

Если у вас есть PHP-отладчик, такой какУстановленный XDebug Я бы установил точку останова в коде getFlash и setFlash и посмотрел, что происходит таким образом.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...