2011-12-20 15 views
6

Sto utilizzando i seguenti codici per reindirizzare il mio utente alla pagina precedente dopo che è stata eseguita una particolare attività.Come inviare dati variabili quando si reindirizza alla pagina precedente

 if (isset($_SERVER['HTTP_REFERER'])) 
     { 
     $this->session->set_userdata('previous_page', $_SERVER['HTTP_REFERER']); 
     } 
     else 
     { 
     $this->session->set_userdata('previous_page', base_url()); 
     } 

Il codice di cui sopra che uso in un controller e il seguente codice in un altro controllore ..

.... some other stuffs... I am updating database values here.... 

     $this->db->where('t_expenseid', $t_expenseid); 
     query=$this->db->update('teacherexpense', $data); 


     redirect($this->session->userdata('previous_page')); 

Il codice di cui sopra sta lavorando bene, ma il problema che sto affrontando è che voglio inviare un successo messaggio con il reindirizzamento in modo che quando la pagina precedente carica un messaggio di successo si apre (ho già jquery per quello). E per questo ho aggiunto il seguente codice sopra il reindirizzamento, ma non so come inviare i dati $ o il messaggio insieme al reindirizzamento. E se sono in grado di inviarlo come recuperare il valore nel controller della pagina precedente.

$data['msg']='Information Has been Successfully Inserted'; 

Potrebbe dirmi come inviarlo e quindi recuperarlo?

Grazie :)

risposta

10

È possibile utilizzare set_flashdata di CI.È possibile utilizzare solo una volta che il messaggio dopo l'aggiornamento della pagina diventa vuoto.

$this->session->set_flashdata('message', 'Authentication failed'); 

    redirect(site_url('message/index/'), 'refresh'); 

E in quella pagina si può prendere questo messaggio

$message = $this->session->flashdata('message'). 
+0

Ha funzionato, grazie che cercavo questo :) – Troubleshooter

+0

abbiamo fatto passare il messaggio flash, ma abbiamo perso il messaggio generato automaticamente da "validation_errors()", c'è un modo per catturarli invece di scrivere il nostro messaggio? –

2

Considerare l'utilizzo flashdata, che viene generalmente utilizzato in situazioni in cui si desidera reindirizzare a una pagina e visualizzare un messaggio. Tieni presente che il messaggio verrà visualizzato solo una volta. Se l'utente aggiorna la pagina, il messaggio scompare.

Ecco come si dovrebbe utilizzare:

$this->db->where('t_expenseid', $t_expenseid); 
query = $this->db->update('teacherexpense', $data); 

// set flashdata 
$this->session->set_flashdata('message', 'Information Has been Successfully Inserted'); 

redirect($this->session->userdata('previous_page')); 

Poi nella "pagina precedente" si potrebbe verificare la presenza di un messaggio e visualizzarlo se esiste:

// get flashdata 
$message = $this->session->flashdata('message'); 

if ($message) { 
    // pass message to view, etc... 
} 
Problemi correlati