2012-10-10 17 views

risposta

13

Dipenderà dalle circostanze. Se si desidera conservare i dati per un po 'di tempo, i dati di sessione sarebbero la strada da percorrere. Tuttavia, se hai solo bisogno di usarlo una volta, i dati flash potrebbero essere più appropriati.

primo passo sarebbe quello di inizializzare la libreria di sessione:

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

quindi memorizzare le informazioni nei dati Flash:

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

Infine, nel secondo controller, recuperare i dati:

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

Ovviamente ciò significherebbe dover inizializzare nuovamente la libreria di sessione dal secondo controller o creare il proprio controller di base che carica la libreria di sessione e che entrambi i controller ereditano da quello.

+0

non riesco a recuperare l'oggetto. Cosa c'è che non va . – Aditi

+0

@Aditi C'è un messaggio di errore? –

+0

Nessun messaggio di errore è presente – Aditi

7

credo che in CodeIgniter non è possibile passare variabili, tra due controller diverso. Un meccanismo ovvio è utilizzare i dati di sessione.

+4

sono d'accordo su questo. L'IC ha un instradamento specifico in cui i controllori sono accessibili tramite URI. i dati di sessione sarebbero utili qui $ this-> sessioni-> set_userdata ('data', $ data); reindirizzamento ('second_cont.php'); – kjurkovic

7

Ok, qui è qualcosa su MVC più prontamente citazione:

un controller è per prendere in ingresso, un modello è per la logica, e, una vista è per la visualizzazione.

Ora, in senso stretto non si consiglia di inviare dati da un controller a un altro. Non riesco a pensare a casi in cui ciò sia richiesto.


Ma, se è assolutamente necessario, allora si potrebbe semplicemente utilizzare redirect per reindirizzare solo per l'altro controller.

Qualcosa di simile:

// 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

In Codeigniter ci sono molti modi per passare il valore da un controller all'altro.

È possibile utilizzare Session code-code per trasferire i dati da un controller a un altro controller.

Per questo è necessario includere prima biblioteca per la sessione

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

quindi è possibile impostare il valore dei dati flash utilizzando nome di variabile.

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

è possibile ottenere il valore in cui si desidera utilizzando il flashdata sessione di CodeIgniter

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

Seconda Opzione CodeIgniter permetterà di reindirizzare l'URL da controll con il nome del controller, il nome del metodo e il valore e poi puoi ottenere il valore in un altro controller.

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

allora si può ottenere il valore in un altro controller

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

Che tutto ....

+0

La tua risposta non cambia nulla, la sua risposta è già sopra e identica alla risposta esistente. –

+0

@Farhad, non sono d'accordo. Questa risposta mostra entrambi i modi per passare una variabile: quelli descritti da Matthew Daly e kalpesh patel oltre alla risposta di Prasanth. In effetti, non sono sicuro se questa non è la migliore risposta per me. – Line

+0

cosa succede se l'utente aggiorna la pagina? la variabile dei dati flash non esiste più quindi ... il codice fallirà – Diego

1

Se si utilizza la sessione nel primo controller allora non impostata quella sessione in primo controller memorizza invece il valore desiderato nell'altro controller,

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

il n ricarica questa sessione nella altro controller come

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

questo è come si può passare i valori da un controller a un altro ....

Problemi correlati