web-dev-qa-db-fra.com

$ this-> session-> set_flashdata () puis $ this-> session-> flashdata () ne fonctionne pas dans codeigniter

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.

25
Mohammad Naji

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.

30
Repox
// 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');
16
Omprakash Patel

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');
9
prash.patil

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

5
Jydipsinh Parmar

Changez votre config.php:

$config['sess_use_database'] = TRUE;

À:

$config['sess_use_database'] = FALSE;

Ça marche pour moi.

3
Crashed