S'il vous plaît jeter un oeil sur le code suivant:
$this->session->set_flashdata('message', 'This is a message.');
var_dump($this->session->flashdata('message'));
Il retourne bool(false)
.
J'espère que ce n'est pas le cas [~ # ~] a besoin de [~ # ~] a redirect()
pour pouvoir être rappelé par la suite, car j’ai parfois besoin de l’appeler juste après le réglage de flashdata dans une vue.
Editer après le commentaire de venkat
$this->session->set_flashdata('message', 'This is a message.');
$this->session->keep_flashdata('message');
var_dump($this->session->flashdata('message'));
Aucune différence malheureusement.
Eh bien, le documentation indique en fait que
CodeIgniter prend en charge "flashdata", ou des données de session qui ne seront disponibles que pour la prochaine requête du serveur, puis seront automatiquement effacées.
comme la toute première chose, ce qui signifie évidemment que vous devez faire une nouvelle requête de serveur. Une redirection, une actualisation, un lien ou un autre moyen d'envoyer l'utilisateur à la requête suivante.
Pourquoi utiliser flashdata si vous l'utilisez dans la même demande, de toute façon? Vous pourriez aussi bien ne pas utiliser flashdata ou utiliser une session régulière.
// Set flash data
$this->session->set_flashdata('message_name', 'This is my message');
// After that you need to used redirect function instead of load view such as
redirect("admin/signup");
// Get Flash data on view
$this->session->flashdata('message_name');
Pour définir flashdata, vous devez rediriger la fonction du contrôleur.
$this->session->set_flashdata('message_name', 'This is test message');
//redirect to some function
redirect("controller/function_name");
//echo in view or controller
$this->session->flashdata('message_name');
Afficher un message flash après la redirection dans Codeigniter
Dans votre contrôleur, définissez cette
<?php
public function change_password(){
if($this->input->post('submit')){
$change = $this->common_register->change_password();
if($change == true){
$messge = array('message' => 'Password chnage successfully','class' => 'alert alert-success fade in');
$this->session->set_flashdata('item', $messge);
}else{
$messge = array('message' => 'Wrong password enter','class' => 'alert alert-danger fade in');
$this->session->set_flashdata('item',$messge );
}
$this->session->keep_flashdata('item',$messge);
redirect('controllername/methodname','refresh');
}
?>
In Your View File Set this
<script type="application/javascript">
/** After windod Load */
$(window).bind("load", function() {
window.setTimeout(function() {
$(".alert").fadeTo(500, 0).slideUp(500, function(){
$(this).remove();
});
}, 4000);
});
</script>
<?php
if($this->session->flashdata('item')) {
$message = $this->session->flashdata('item');
?>
<div class="<?php echo $message['class'] ?>"><?php echo $message['message']; ?>
</div>
<?php
}
?>
Veuillez vérifier le lien ci-dessous pour Affichage d'un message flash après une redirection dans Codeigniter
Changez votre config.php:
$config['sess_use_database'] = TRUE;
À:
$config['sess_use_database'] = FALSE;
Ça marche pour moi.