Accès à la valeur de la variable publique dans le contrôleur CodeIgniter
-
28-10-2019 - |
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..
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.