Question

Ok, je sais ce que je vais dire va être super vague, mais écoutez-moi:

Je veux utiliser des messages flash parce que je aime l'idée d'eux, mais ils ne semblent pas toujours travailler pour moi.

Voici mon flux de travail:

  1. L'utilisateur crée un groupe à la page A
  2. J'envoie une notification par e-mail à membres du nouveau groupe
  3. Je mis le message flash "Succès!"
  4. Je redirigent l'utilisateur au groupe nouvellement créé et afficher le « succès! » un message flash.

Le problème est après que je redirigent l'utilisateur, les messages flash ne sont plus dans la _SESSION $. Pour rendre cela encore plus étrange, si je prends l'étape où j'envoie des notifications par email, il fonctionne. WTF?

Quelqu'un at-il des problèmes similaires avec l'expérience des messages flash? Quelqu'un at-il comprendre pourquoi l'envoi de l'e-mail affecterait les messages flash?

Je pense qu'à ce stade, je vais juste coller avec setState et supprimer manuellement après les afficher.

Était-ce utile?

La solution

Comment l'e-mail envoyé? Je sais en utilisant l'extension Yii courrier (un swiftmailer emballage je pense) en mode « debug » utilise la méthode setFlash, alors peut-être que ce effaçant le tableau en quelque sorte ...?

Les variables « flash » sont mises à jour par la méthode init () de CWebUser, donc s'il y a un appel supplémentaire à CWebUser il est possible que ce qui est de déblayer les variables flash.

Considérant que vous réglez le flash après l'e-mail que, je ne sais pas comment cela se passerait-il. Mon seul autre supposition d'ailleurs la chose « en mode debug » (pas un problème si vous utilisez seulement les méthodes de messagerie PHP cependant) est que l'envoi de courrier est le déclenchement d'une part redirect supplémentaire.

Si vous avez un débogueur PHP comme xDebug installé, je mettrais un point d'arrêt dans le GetFlash et le code setFlash et obtenir un coup d'œil à ce qui se passe de cette façon.

Bonne chance!

Autres conseils

Vous pouvez définir un autoUpdateFlash de propriété du composant CWebUser à false. Dans ce cas, un message flash sera supprimé seulement après utilisation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top