/ / CodeIgniter flashdata [flash: ancien: message] affiché - codeigniter, flash

CodeIgniter flashdata [flash: ancien: message] en cours d'affichage - codeigniter, flash

J'utilise CodeIgniter sur OpenShift.

Dans mon contrôleur, j’utilise:

$this->session->set_flashdata("message", "message X");
$this->load->view("viewpage");

À mon avis, j’utilise:

print_r ($this->session->userdata);
echo $this->session->flashdata("message");

Voici mes observations: première fois par la vue contrôleur / charge, je ne vois rien en écho à la

$this->session->flashdata("message");

Je vois ceci avec le print_r:

[flash: new: message] => message 1

la deuxième fois par la vue contrôleur / chargement, je vois l'écho du message 1 Je vois ceci avec le print_r:

[flash: old: message] => message 1 [flash: new: message] => message 2

Donc, ce qui semble se passer, c'est que [flash: old: message] est affiché à la place de [flash: new: message]. Si [flash: ancien: message] n'est pas défini, rien ne s'affiche.

S'il vous plaît aider.

À votre santé,

Mike

Réponses:

0 pour la réponse № 1

lorsque vous définissez une valeur dans une donnée flash, vous devez rafraîchir l'affichage, comme suit:

controller.php

function do_somthing(){
$this->session->set_flashdata("index", "text message");

redirect("controller/view", "refresh");
}

controller / view.php

<div>
<?= (isset($this->session->flashdata("index"))) ? $this->session->flashdata("index") : ""?>
</div>

0 pour la réponse № 2

Flashdata est conçu pour être utilisé lors du déplacement d'une page à une autre (redirections). Vous l'utilisez généralement après une publication, pour renvoyer un message de réussite / échec.

la raison de ceci:

[flash: old: message] => message 1 [flash: new: message] => message 2

se produit est parce que flashdata est retenu pour 1chargement de page supplémentaire (afin que vous puissiez utiliser $ this-> session-> keep_flashdata () si nécessaire ... lorsque vous déclenchez flashdata en actualisant la page pour générer ces résultats avec des éléments confus et non conçus pour être utilisés de cette façon ..

Cela semble vraiment être un problème lié à la manière dont vous utilisez flashdata qu’il affiche des données incorrectes.

Vous trouverez ci-dessous un exemple d'utilisation de flashdata (même sans redirection)

manette:

    public function index()
{

if (!$this->input->post()) {

$this->load->view("playland/index");

}else{
if ($this->input->post("submit") == "submit") {

$data["firstname"] = $this->input->post("firstname");
$data["lastname"] = $this->input->post("lastname");

$this->session->set_flashdata("test", "data posted");

$this->load->view("playland/retrieve", $data);
}
}
}

vue d'index:

<html>
<body>
<?php print_r($this->session->userdata)?>
<form method="post" action="playland">
First name:<br>
<input type="text" name="firstname"><br>
Last name:<br>
<input type="text" name="lastname"><br>
<input type="submit" value="submit" name="submit">
</form>
</body>
</html>

récupérer la vue:

<html>
<body>
<?php echo $this->session->flashdata("test") ?><br>
<p>
First Name:<br>
<?php echo isset($firstname) ? $firstname : "";?><br>
Last Name:<br>
<?php echo isset($lastname) ? $lastname : "";?><br>
</p>
<A HREF="javascript:history.go(0)">Click to refresh the page</A>
<A HREF="javascript:history.back()">Return to original page</A>
</body>
</html>