2016-04-29 9 views
1

Ich verwende CodeIgniter auf OpenShift.CodeIgniter flashdata [flash: alt: message] wird angezeigt

In meinem Controller Ich verwende:

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

Aus meiner Sicht Ich verwende:

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

Hier sind meine Beobachtungen: erstes Mal durch die Steuerung/Last-Ansicht, I sehen nichts hallte mit dem

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

ich sehe dies mit dem print_r:

[flash: Neu: message] => Nachricht 1

zweites Mal durch die Steuereinheit/Last-Ansicht, ich sehe "Nachricht 1" I dies mit dem print_r siehe hallte wobei:

[flash: alt: message] => Meldung 1 [flash: neu: message] => Nachricht 2

Also, was passiert zu sein scheint, ist, dass [flash: alt: message] wird angezeigt anstelle von [flash: new: message]. Wenn [flash: old: message] nicht eingestellt ist, wird nichts angezeigt.

Bitte helfen.

Cheers,

Mike

Antwort

0

wenn Sie einen Wert in einem Flash-Datensatz, müssen Sie eine Ansicht machen erfrischen wie:

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

Nun, ich danke Ihnen sehr much.That scheint zu funktionieren; aber das scheint meine $ _POST Daten zu verlieren? –

0

Flashdata wurde entwickelt, um von einer Seite zu einer anderen zu wechseln (Weiterleitungen), Sie verwenden es normalerweise nach einem Post, der eine Erfolgs-/Fehlermeldung zurückgibt.

der Grund dafür:

[flash: alt: message] => Meldung 1 [flash: neu: message] => Nachricht 2

auftreten, weil flashdata für zurückgehalten wird, 1 zusätzliche Seite laden (so können Sie $ this-> Sitzung-> keep_flashdata(), falls erforderlich ... verwenden, wie Sie Flashdata auslösen durch Aktualisieren der Seite, um diese Ergebnisse zu generieren, seine verwirrenden Dinge und nicht für die Verwendung dieser Art.

Dies scheint wirklich ein Problem auftreten ng aufgrund der Art, wie Sie flashdata verwenden, als dass die falschen Daten angezeigt werden.

Ein Arbeitsbeispiel flashdata der Verwendung unter (auch ohne Umleitung)

Controller:

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

Übersicht:

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

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

Verwandte Themen