2012-10-28 10 views
17

prega di dare un'occhiata al seguente codice:

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

Riporta bool(false) .

spero che non si BISOGNO un redirect() essere richiamabili dopo che, perché alcune volte ho bisogno di chiamare subito dopo l'impostazione del flashdata in una vista.


Modifica dopo venkat 's commento

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

Nessuna differenza, purtroppo.

+0

CodeIgniter supporta "flashdata" o dati di sessione che saranno disponibili solo per la successiva richiesta del server e verranno quindi cancellati automaticamente. Se vuoi conservare i dati flash attraverso una richiesta aggiuntiva usa questo $ this-> session-> keep_flashdata ('message'); Se sbaglio, per favore fammi sapere ........... –

+0

Grazie caro @Venkat, ma nessuna differenza. Ho aggiornato la mia domanda. –

+0

Eventualmente i flashdata possono essere richiamati solo alla successiva richiesta del server? Assicurati anche che la sessione sia stata caricata correttamente con la chiave di crittografia, ecc. – jtheman

risposta

21

Beh, la realtà non documentation affermare che

CodeIgniter supporta "flashdata", o dati di sessione che sarà solo disponibile per la prossima richiesta del server, e sono quindi automaticamente cancellata.

come la prima cosa, che significa ovviamente che è necessario eseguire una nuova richiesta server. Un reindirizzamento, un aggiornamento, un collegamento o qualche altro mezzo per inviare l'utente alla richiesta successiva.

Perché utilizzare flashdata se lo si utilizza nella stessa richiesta, comunque? Potresti anche non usare i flashdata o usare una sessione regolare.

+0

Theak you, yes, ho letto il documento dopo aver fatto la mia domanda !!! Comunque, vorrei poter usare 'flashdata' perché il vero significato per tali scopi è' flashdata', non la normale sessione. Un altro motivo è che ora devo usarlo in modo più manuale perché dovrei pensare a disabilitare le sessioni di messaggi dopo averle visualizzate. –

+1

Non necessariamente: un'opzione potrebbe essere [estendere CI] (http://codeigniter.com/user_guide/general/core_classes.html) con la propria Libreria di sessione che consente l'accesso diretto ai flashdata dopo che è stato impostato. – 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

Cambia il tuo config.php:

$config['sess_use_database'] = TRUE; 

A:

$config['sess_use_database'] = FALSE; 

Funziona per me.

6

Per impostare flashdata è necessario reindirizzare funzione del controller

$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

Visualizzazione di un messaggio flash dopo reindirizzare in Codeigniter

nel controller imposta questa

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

?> 

controlli prego sotto il collegamento per Displaying a flash message after redirect in Codeigniter

-1

Set:

$config['sess_use_database'] = TRUE; 

A:

$config['sess_use_database'] = FALSE; 

Sta funzionando benissimo.

Problemi correlati