2012-10-10 41 views

Respuesta

13

Esto dependerá de las circunstancias. Si desea conservar los datos durante un tiempo, entonces los datos de la sesión serían el camino a seguir. Sin embargo, si solo necesita usarlo una vez, los datos del flash podrían ser más apropiados.

primer paso sería para inicializar la biblioteca de sesión:

$this->load->library('session'); 

a continuación, almacenar la información de datos en memoria flash:

$this->session->set_flashdata('item', $myVar); 

Por último, en el segundo controlador, ir a buscar los datos:

$myVar = $this->session->flashdata('item'); 

Obviamente, esto significaría que tendría que inicializar la biblioteca de sesión nuevamente desde el segundo controlador, o cree su propio controlador base que carga la biblioteca de sesión y que ambos controladores hereden de esa.

+0

no puedo recuperar el artículo. ¿Qué está mal? – Aditi

+0

@Aditi ¿Hay un mensaje de error? –

+0

No hay ningún mensaje de error – Aditi

7

creo que en CodeIgniter no se puede pasar variables, entre dos controlador diferente. Un mecanismo obvio es usar datos de sesión.

+4

estoy de acuerdo con eso. CI tiene un enrutamiento específico donde se accede a los controladores a través de URI. datos de sesión serían útiles aquí $ this-> sessions-> set_userdata ('data', $ data); redirect ('second_cont.php'); – kjurkovic

7

Ok, aquí es algo sobre MVC más fácilmente se cita:

Un controlador es para la toma de entrada, es un modelo para la lógica, y, una visión es para la visualización.

Ahora, estrictamente hablando, no debería querer enviar datos de un controlador a otro. No puedo pensar en ningún caso en que eso sea obligatorio.


Pero, si es absolutamente necesario, entonces se podría simplemente utilizar redirect simplemente redirigir al otro controlador.

Algo así como:

// some first_cont.php code here 
redirect('/second_cont/valuereciever/value1') 


// some second_cont.php code here 
public function valureciever($value){ 
    echo $value; // will output value1 
} 
4

En Codeigniter hay muchas formas de pasar el valor de un controlador a otro.

Puede usar codeigniter Session para pasar los datos de un controlador a otro.

Para eso se tienen que incluir la primera sesión de la biblioteca para

$this->load->library('session'); 

entonces se puede establecer el valor de datos flash utilizando nombre de la variable.

// Set flash data 
$this->session->set_flashdata('variable_name', 'Value'); 

ellos se puede obtener el valor en el que desea realizar con el flashdata sesión de CodeIgniter

// Get flash data 
$this->session->flashdata('variable_name'); 

segunda opción CodeIgniter le permiten redirigir la url de controll con el nombre del controlador, nombre del método y valor y luego puedes obtener el valor en otro controlador.

// Passing the value 
redirect('/another_controller_name/method_name/variable'); 

entonces se puede obtener el valor en otro controlador

public function method_name($variable) 
{ 
echo $variable; 
} 

Que todo ....

+0

Su respuesta no cambia nada, ya está respondida anteriormente e Idéntica a la respuesta existente. –

+0

@ Fark, no estoy de acuerdo. Esta respuesta muestra las dos maneras de pasar la variable: las descritas por Matthew Daly y kalpesh patel, así como la respuesta de Prasanth. De hecho, no estoy seguro de si esta no es la mejor respuesta para mí. – Line

+0

¿Qué sucede si el usuario actualiza la página? la variable de datos flash ya no existe, así que ... el código fallará – Diego

1

Si está utilizando la sesión en el primer controlador, entonces no desarmar esa sesión en primer controlador , en su lugar, almacene el valor que desea en el otro controlador como,

$sess_array = array('value_name1' => 'value1', 'value_name2' => 'value2'); 
$this->session->set_userdata('session_name', $sess_array); 

the n recargar esta sesión en el otro controlador como

$session_data= $this->session->userdata('session_name'); 
$any_var_name = $session_data['value1']; 
$any_var_name = $session_data['value2']; 

esto es cómo se puede pasar valores de un controlador a otro ....

Cuestiones relacionadas