2011-12-20 14 views
6

Korzystam z następujących kodów, aby przekierować mojego użytkownika na poprzednią stronę po wykonaniu określonego zadania.Jak wysłać dane zmienne podczas przekierowania na poprzednią stronę

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

Powyższy kod używam w kontrolerze i następujący kod w innym kontrolerze ..

.... 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')); 

Powyższy kod działa poprawnie, ale problem jestem stoi to chcę wysłać sukces wiadomość z przekierowaniem, aby po załadowaniu poprzedniej strony wyświetlił się komunikat o powodzeniu (mam już jQuery). I do tego dodałem następujący kod powyżej przekierowania, ale nie wiem, jak wysłać $ dane lub wiadomość wraz z przekierowaniem. I jeśli jestem w stanie wysłać to, jak odzyskać wartość w kontrolerze poprzedniej strony.

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

Czy możesz mi powiedzieć, jak go wysłać, a następnie pobrać?

Dzięki :)

Odpowiedz

10

Można użyć set_flashdata CI.Możesz użyć tylko raz, gdy ta wiadomość po odświeżeniu wiadomości strony zniknie.

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

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

I na tej stronie można złapać tę wiadomość Przez

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

Udało się, dzięki szukałem tego :) – Troubleshooter

+0

dostaliśmy wiadomość przez lampę błyskową, ale stracił wiadomości automatycznie generowane przez "validation_errors()", czy istnieje sposób, aby je złapać zamiast pisać naszą własną wiadomość? –

2

Rozważ użycie flashdata, który jest powszechnie używany w sytuacjach, gdy chcesz przekierować do strony i wyświetlić komunikat. Pamiętaj, że wiadomość zostanie wyświetlona tylko raz. Jeśli użytkownik odświeży stronę, wiadomość zniknie.

Oto jak można go używać:

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

Następnie w „poprzedniej strony” można sprawdzać wiadomości i wyświetla go, jeśli istnieje:

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

if ($message) { 
    // pass message to view, etc... 
} 
Powiązane problemy