2011-12-20 28 views
6

Estoy utilizando los siguientes códigos para redirigir a mi usuario a la página anterior después de realizar una tarea en particular.Cómo enviar datos variables al redirigir a la página anterior

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

El código anterior que utilizo en un controlador y el código siguiente en otro controlador ..

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

El código anterior funciona bien, pero el problema que estoy enfrentando es que quiero enviar un éxito mensaje con la redirección para que cuando la página anterior se carga, aparezca un mensaje de éxito (ya tengo jquery para eso). Y para esto agregué el siguiente código sobre la redirección, pero no sé cómo enviar los $ datos o el mensaje junto con la redirección. Y si puedo enviarlo cómo recuperar el valor en el controlador de la página anterior.

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

¿Podría decirme cómo enviarlo y luego recuperarlo?

Gracias :)

Respuesta

10

Usted puede utilizar set_flashdata de CI. Solo puede usar una vez ese mensaje después de actualizar el mensaje de la página queda en blanco.

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

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

Y en esa página se puede coger este mensaje por

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

Funcionó, Gracias que estaba buscando esto :) – Troubleshooter

+0

nos hizo llegar el mensaje a través de flash, pero perdieron el mensaje de auto generada por "validation_errors()", ¿hay alguna manera de atraparlos en lugar de escribir nuestro propio mensaje? –

2

Considere el uso de flashdata, que se utiliza generalmente en situaciones en las que desee redirigir a una página y mostrar un mensaje. Tenga en cuenta que el mensaje solo se mostrará una vez. Si el usuario actualiza la página, el mensaje desaparecerá.

Aquí es cómo usted lo utilizaría:

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

Luego, en la "página anterior" se puede comprobar de un mensaje y mostrarlo si existe:

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

if ($message) { 
    // pass message to view, etc... 
} 
Cuestiones relacionadas