Je suis nouveau dans Codeigniter et OOP PHP.
Manette:
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
Si echo $planet
dans le contrôleur, il fait ce qu'il est censé faire. Si je echo $planet
dans la vue, j'obtiens une erreur de variable non définie. $planet
n'est pas un tableau. Pourquoi la variable $planet
n'est-elle pas transmise à la vue?
Je sais que la question est simple et fondamentale et je suis gêné de ne pas pouvoir comprendre ce que je fais de mal.
EDIT: OK, après plus de bidouillage, je me suis mis au travail. Les variables ne peuvent-elles être transmises du contrôleur à la vue que lorsqu'elles sont formatées en tant que tableau?
Vous devez passer un tableau à la vue. CodeIgniter met automatiquement $planet
à votre disposition.
$data = array('planet' => $planet);
$this->load->view('main_view', $data);
Avec cela, vous pouvez utiliser $planet
dans votre vue.
Par exemple, si vous procédez comme suit:
$data = array('foo' => 'Hello', 'bar' => 'world');
$this->load->view('main_view', $data);
$foo
et $bar
seront disponibles dans votre vue. Les paires clé-valeur du tableau sont automatiquement converties en variables dans la vue.
Vous pouvez transmettre un tableau ou un objet à la vue. Vous pouvez ensuite accéder à la (aux) clé (s) du tableau en tant que variable (s) dans votre vue.
Tableau
public function index()
{
$this->load->model('main_model');
$planet_data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $planet_data);
}
Objet
public function index()
{
$this->load->model('main_model');
$planet_data = new stdClass(); //Creates a new empty object
$planet_data->planet = $this->main_model->solar();
$this->load->view('main_view', $planet_data);
}
Extrait de Manuel de l'utilisateur de CodeIgniter : Remarque: si vous utilisez un objet, les variables de classe seront transformées en éléments de tableau.
Quel que soit le mode de transmission des données, celles-ci peuvent être affichées comme suit:
<?php echo $planet; ?>
Si c'est un tableau, vous devrez parcourir le tableau. Ou un objet, puis accédez à ses variables membres.
D'après mon expérience, utiliser un tableau est plus courant que d'utiliser un objet.
c'est comment le faire facilement
public function index() {
$this->load->model('main_model');
$data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $data);
}
Maintenant, à votre avis, vous pouvez accéder à la valeur de cette façon
echo $planet;
Essayez comme:
public function index(){
$this->load->model('main_model');
$data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $data);
}
et à votre vue, vous pouvez accéder à "$ planet".
vous pouvez passer une variable dans l'URL à
function regresion($value) {
$data['value'] = $value;
$this -> load -> view('cms/template', $data);
}
Dans la vue
<?php print_r($value);?>
En vue, nous passons tableau et la clé de tableau deviendra automatiquement variable et sera mise à votre disposition par codeigniter, nous ne pouvons pas simplement passer des variables à la vue, nous devons passer tableau
Voici votre code
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar(); // <--- Change this line
$this->load->view('main_view', $planet);
}
changez-le simplement en
public function index(){
$this->load->model('main_model');
$data['planet']= $this->main_model->solar(); // <--- to this
$this->load->view('main_view', $data);
}
et à votre avis, vous pouvez y accéder simplement comme ceci
echo $planet;
Si modal contient la réponse du tableau:
public function solar() {
$data['earth'] = 'Earth';
$data['venus'] = 'Venus';
return $data;
}
alors vous les données à afficher comme ceci:
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
Mais à la vue, vous aurez des données d'accès comme ceci:
echo $earth;
echo $venus;
si vous ne savez pas que vous voulez une réponse, utilisez un code comme celui-ci:
public function index(){
$this->load->model('main_model');
$planet['planet'] = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
et dans le fichier de vue, vous pouvez accéder aux données comme ceci:
print_r($planet);
Si vous ne savez pas quelles données seront visibles, utilisez simplement ce code:
print_r($this->_ci_cached_vars);