2011-06-16 7 views
7

Qualcuno sa come accedere al valore della variabile del controller pubblico che è stata aggiornata da un'altra funzione? codice di esempio controllerAccesso al valore della variabile pubblica nel controller codeign

class MyController extends CI_Controller { 

public $variable = array(); 

function __construct() { 
    parent::__construct(); 
} 

function index(){ 
    $this->variable['name'] = "Sam"; 
    $this->variable['age'] = 19; 
} 

function another_function(){ 
    print_r($this->variable); 
} 

}

Quando chiamo Another_Function() ottengo una matrice vuota .. Quale potrebbe essere il problema? Qualsiasi aiuto sarà apprezzato ..

+0

domanda stupida, hai chiamato index()? –

+1

Questo dovrebbe funzionare, sembra che sia così e 'index()' non è stato chiamato. – Dunhamzzz

risposta

9

devi utilizzare il costruttore, invece di indice().

class MyController extends CI_Controller { 

    public $variable = array(); 

    function __construct() { 
     parent::__construct(); 
     $this->variable['name'] = "Sam"; 
     $this->variable['age'] = 19; 
    } 

    function index(){ 

    } 

    function another_function(){ 
     print_r($this->variable); 
    } 
    } 

Se si desidera chiamare index(), quindi chiamare another_function(), provare a utilizzare CI session classe.

class MyController extends CI_Controller { 

public $variable = array(); 

function __construct() { 
    parent::__construct(); 
    $this->load->library('session'); 
    if ($this->session->userdata('variable')) { 
     $this->variable = $this->session->userdata('variable'); 
    } 
} 

function index(){ 

    $this->variable['name'] = "Sam"; 
    $this->variable['age'] = 19; 
    $this->session->set_userdata('variable', $this->variable); 
} 

function another_function(){ 
    print_r($this->variable); 
} 
     } 
+0

Vecchio ma oro per me. Thaks tpae –

2

La funzione index() viene chiamato solo quando si va a quella pagina specifica, cioè index.php/mycontroller/index andando così a index.php/mycontroller/another_function non chiamare la funzione index(). Se è necessario che l'utente si rechi prima nella pagina indice (per ottenere i dettagli), indirizzarli prima lì e salvare i dettagli in un database o nella variabile di sessione. Se conosci i valori in anticipo (cioè sarà sempre "Sam" e "19", inserisci il codice nel costruttore, che viene chiamato ogni volta che visiti una pagina da quel controller.