2011-06-16 24 views
7

¿Alguien sabe cómo acceder al valor de la variable del controlador público que ha sido actualizada por otra función? código de ejemplo controladorAcceso al valor de la variable pública en codeigniter controller

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); 
} 

}

cuando llamo another_function() i obtener una matriz vacía .. ¿Cuál podría ser el problema? Cualquier ayuda será apreciada ..

+0

pregunta tonta, ¿ha llamado índice()? –

+1

Esto debería funcionar, parece que e 'index()' no ha sido llamado. – Dunhamzzz

Respuesta

9

tiene que utilizar el constructor, en lugar de índice().

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); 
    } 
    } 

Si desea llamar index(), a continuación, llamar another_function(), trate de usar IC session clase.

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

Viejo pero oro para mí. Thaks tpae –

2

La función index() sólo se le llama cuando se va a esa página específica, es decir index.php/mycontroller/index por lo que va a index.php/mycontroller/another_function no va a llamar a la función index(). Si necesita que el usuario vaya primero a la página de índice (para obtener sus detalles), diríjalos allí primero y guarde los detalles en una base de datos o en la variable de sesión. Si conoce los valores de antemano (es decir, siempre va a ser "Sam" y "19", coloque ese código en el constructor, que se llama cada vez que visita una página desde ese controlador.

Cuestiones relacionadas