/ / CodeIgniter flashdata [flash: old: message] wird angezeigt - Codeigniter, flash

CodeIgniter flashdata [flash: alt: Nachricht] wird angezeigt - Codezeichner, Flash

Ich verwende CodeIgniter unter OpenShift.

In meinem Controller verwende ich:

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

Aus meiner Sicht verwende ich:

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

Hier sind meine Beobachtungen: erstmal durch die controller / load view, sehe ich nichts mit dem

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

Ich sehe das mit dem print_r:

[flash: new: message] => message 1

Beim zweiten Mal in der Controller- / Load-Ansicht wird "Message 1" angezeigt Ich sehe das mit dem print_r:

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

Es scheint also so zu sein, dass [flash: old: message] anstelle von [flash: new: message] angezeigt wird. Wenn [flash: old: message] nicht eingestellt ist, wird nichts angezeigt.

Bitte helfen Sie.

Prost,

Mike

Antworten:

0 für die Antwort № 1

Wenn Sie einen Wert in Flash-Daten festlegen, müssen Sie die Ansicht wie folgt aktualisieren:

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 für die Antwort № 2

Flashdata ist dafür gedacht, von einer Seite auf eine andere verschoben zu werden (Umleitungen). Normalerweise verwenden Sie es nach einem Posting.

Der Grund hierfür:

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

Dies geschieht, weil flashdata für 1 beibehalten wirdzusätzliches Laden der Seite (damit Sie $ this-> session-> keep_flashdata () verwenden können, falls erforderlich ... während Sie Flashdata auslösen, indem Sie die Seite aktualisieren, um diese Ergebnisse zu erzeugen, die verwirrend sind und nicht für die Verwendung auf diese Weise entwickelt wurden.)

Dies scheint tatsächlich ein Problem zu sein, das auf die Art und Weise zurückzuführen ist, in der Sie flashdata verwenden, als die falschen Daten anzuzeigen.

Ein funktionierendes Beispiel für die Verwendung von Flashdata ist unten (auch ohne Weiterleitung).

Regler:

    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);
}
}
}

Indexansicht:

<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>

Ansicht abrufen:

<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>