2012-10-28 6 views
17

Bitte nehmen Sie sich einen Blick auf den folgenden Code:

$this->session->set_flashdata('message', 'This is a message.'); 
var_dump($this->session->flashdata('message')); 

Es gibt bool(false) .

Ich hoffe, dass es nicht NEED ein redirect() danach abrufbare sein, weil einige Male habe ich es gleich nach der flashdata in einer Ansicht aufrufen müssen festlegen.


bearbeiten nach venkat ‚s Kommentar

$this->session->set_flashdata('message', 'This is a message.'); 
$this->session->keep_flashdata('message'); 
var_dump($this->session->flashdata('message')); 

leider kein Unterschied.

+0

CodeIgniter unterstützt "flashdata" oder Sitzungsdaten, die nur für die nächste Serveranforderung verfügbar sind und dann automatisch gelöscht werden. Wenn Sie Flash-Daten durch eine zusätzliche Anfrage erhalten wollen, verwenden Sie diese $ this-> session-> keep_flashdata ('message'); Wenn ich falsch liege, lassen Sie es mich wissen ........... –

+0

Vielen Dank liebe @Venkat, aber kein Unterschied. Ich habe meine Frage aktualisiert. –

+0

Möglicherweise sind Flashdata nur bei der nächsten Serveranfrage abrufbar? Stellen Sie sicher, dass Sie die Sitzung korrekt mit dem Verschlüsselungsschlüssel usw. geladen haben. – jtheman

Antwort

21

Nun, die documentation nicht sagen, dass tatsächlich

CodeIgniter unterstützt „flashdata“ oder Session-Daten, die nur für die nächste Serveranfrage verfügbar sein wird, und werden dann automatisch gelöscht.

als die allererste Sache, die offensichtlich bedeutet, dass Sie eine neue Serveranforderung durchführen müssen. Eine Weiterleitung, eine Aktualisierung, ein Link oder eine andere Möglichkeit, den Benutzer zur nächsten Anfrage zu senden.

Warum flashdata verwenden, wenn Sie es in der gleichen Anfrage sowieso verwenden? Sie könnten auch nicht flashdata verwenden oder eine normale Sitzung verwenden.

+0

Thnak du, ja, ich lese das Dokument nach meiner Frage !!! Jedenfalls wünschte ich, ich könnte 'flashdata' verwenden, weil das wirkliche Mittel für solche Zwecke' flashdata' ist, keine normale Sitzung. Ein weiterer Grund ist, dass ich es nun manuell verwenden muss, weil ich darüber nachdenken sollte, Nachrichtensitzungen zu deaktivieren, nachdem sie angezeigt wurden. –

+1

Nicht unbedingt - eine Option wäre [CI erweitern] (http://codeigniter.com/user_guide/general/core_classes.html) mit Ihrer eigenen Session-Bibliothek, die einen direkten Zugriff auf die Flash-Daten ermöglicht, nachdem diese festgelegt wurde. – Repox

14
// 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'); 
2

config.php ändern:

$config['sess_use_database'] = TRUE; 

An:

$config['sess_use_database'] = FALSE; 

Es funktioniert für mich.

6

So stellen flashdata Sie Controller-Funktion

$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'); 
2

Anzeigen einer Flash-Mitteilung nach in Codeigniter

in Ihrem Controller dies für Displaying a flash message after redirect in Codeigniter untenstehenden Link überprüfen

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

?> 

Bitte setzen Sie umleiten müssen umleiten

-1

Satz:

$config['sess_use_database'] = TRUE; 

An:

$config['sess_use_database'] = FALSE; 

Es funktioniert gut.

Verwandte Themen