Question

Quelqu'un sait-il comment accéder à la valeur de la variable du contrôleur public qui a été mise à jour par une autre fonction? Exemple de code Contrôleur

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

}

Quand j'appelle un autre_function (), j'obtiens un tableau vide .. quel pourrait être le problème? Toute aide sera appréciée..

Était-ce utile?

La solution

Vous devez utiliser le constructeur, au lieu d'index ().

    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 vous voulez appeler index(), alors appelez another_function(), essayez d'utiliser CI session classer.

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

Autres conseils

La index() La fonction n'est appelée que lorsque vous accédez à cette page spécifique, c'est-à-dire index.php/mycontroller/index Alors aller à index.php/mycontroller/another_function n'appellera pas le index() fonction. Si vous avez besoin de l'utilisateur pour aller d'abord sur la page d'index (afin d'obtenir ses détails), dirigez-les d'abord et enregistrez les détails dans une base de données ou dans la variable de session. Si vous connaissez les valeurs à l'avance (c'est-à-dire ce sera toujours "Sam" et "19", alors mettez ce code dans le constructeur, qui s'appelle chaque fois que vous visitez une page de ce contrôleur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top