2016-01-19 4 views
2

Je travaille sur un projet en PHP qui n'utilise pas de framework pour PHP. Je viens d'arrière-plan et je Yii ai utilisé:Messages Flash avec sessions en PHP

Yii::app()->user->setFlash('flash_name', 'Flash value'); 

Et vérifié avec:

Yii::app()->user->hasFlash('flash_name'); 

Pour vérifier si elle est présente et si elle existe, et pour obtenir la valeur de celui-ci je :

Yii::app()->user->getFlash('flash_name', 'Default Flash value'); 

pour l'instant, j'ai écrit ces fonctions à set, check et get flash:

function set_flash($flash_name, $value) { 
    $_SESSION['flashes'][$flash_name] = $value; 
} 

function has_flash($flash_name) { 
    return isset($_SESSION['flashes'][$flash_name]) ? true : false; 
} 

function get_flash($flash_name, $default_value = null) { 
    if(has_flash($flash_name)) { 
     return $_SESSION['flashes'][$flash_name]; 
    } 

    return $default_value; 
} 

Cependant, quand je l'utilise dans mon post.php comme ceci:

set_flash('success', true); 

Et vérifier dans mon index.php comme ceci:

<div class="container"> 
    <?php if(has_flash('success') && (get_flash('success') === true)): ?> 
     <div class="alert alert-success"> 
      <h4>Success!</h4> 
      <hr /> 
      <p>You have successfully posted new content on your website. Now you can edit or delete this post.</p> 
     </div> 
    <?php endif; ?> 
</div> 

chaque fois que j'actualisez la page, le message encore apparaître là.

Comment puis-je retirer le flash après qu'il a été utilisé ou invoqué?

Répondre

2

Ajouter une nouvelle ligne à get_flash:

function get_flash($flash_name, $default_value = null) { 
    if(has_flash($flash_name)) { 
     $retVal = $_SESSION['flashes'][$flash_name]; 
     // don't unset before you get the vaue 
     unset($_SESSION['flashes'][$flash_name]); 
     return $retVal; 
    } 

    return $default_value; 
}