Codeigniter: transmettre les données du contrôleur à la vue
je veux passer $data
depuis le contrôleur nommé poll
results_view
cependant j'obtiens une erreur de variable non définie.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Poll extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->helper('form');
}
public function index()
{
$this->load->view('poll_view',$data);
}
public function vote()
{
echo "Voting Successfull";
$this->db->insert('votes',$_POST);
}
public function results()
{
echo "These are the results";
//$query = $this->db->get('votes');
$data = "hello";
$this->load->view('results_view', $data);
}
}
Results_view.php
<html>
<?php echo $data; ?>
</html>
10 réponses
$data
devrait être un tableau ou d'un objet: http://codeigniter.com/user_guide/general/views.html
$data = array(
'title' => 'My Title',
'heading' => 'My Heading',
'message' => 'My Message'
);
$this->load->view('results_view', $data);
results_view.php
<html>
<?php
//Access them like so
echo $title.$heading.$message; ?>
</html>
En termes simples,
$ data ['a'] dans controller devient $A dans votre vue. ($données n'existent pas dans votre point de vue, seul l'index sera disponible)
e.g.
Controller:
$data['hello']='hellow world';
view:
echo $hello;
Le point de vue de ne pas appeler les données de 'données'
le contrôleur inclurait un index associatif (pas sûr si c'est la bonne nomenclature) pour les données E. g' stuff ' looking thus $data['stuff']
Vous feriez echo
dans la vue, de sorte: echo $stuff;
echo $data;
je suis un violoniste de code v mais j'aime vraiment le CodeIgniter alors excuse - moi si j'ai ce cul sur les nichons.
encore une chose-votre fonction de constructeur est sûrement un peu un gâchis. Tout ce que le chargement des bibliothèques et des helpers est fait avec le fichier autoload.
vous avez juste besoin de créer un tableau, vous utilisez codeigniter droite?
$data['hello'] = "Hello, world";
$this->load->view('results_view', $data);
En de la page "results_view" il suffit de faire:
<?php echo $hello;?>
Obs: vous pouvez créer n données, il suffit de faire attention dans le nom et d'en faire un tableau.
Obs2: pour utiliser les données, utilisez la touche du tableau avec un écho.
dans votre controller vous pouvez passer
$data['poll'] = "Your results";
dans votre vue vous pouvez appeler
echo $poll;
vous pouvez le faire de cette façon $data['bonjour'] = "bonjour";
dans la vue echo $bonjour;
Ok donc je l'ai finalement résolu. Vous devriez vraiment avoir un modèle (ça aide beaucoup)
dans votre modèle faites quelque chose comme
Modèle
class poll_model extends CI_MODEL {
function __construct() {
$this-load->database();
}
function get_poll {
$this->db->query("SELECT * FROM table");
$row = $query->row();
$obj = array(
'id' => $row->id
);
return $obj;
}
}
maintenant, si vous avez plus qu'un id, dites le nom du sondage#, vous pouvez ajouter dans array. Maintenant dans votre controller
class Poll extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->helper('form');
$this->load->model('poll_model');
}
public function index()
{
$data["a"] = $this->poll_model->get_poll();
$this->load->view('poll_view',$data);
}
Et enfin VIEW
<? echo $a["id"]; ?>
C'est d'une grande aide. J'ai trouvé en testant et ça marche pour moi.
j'ai vu toutes les réponses ci-dessus donc voici ce que je fais quand je dois charger les données du contrôleur à ma vue. Pour Transmettre les Données À la vue du contrôleur:
public function your_controller(){
// Your Necessary Code
// You have the $data, $data2, $data3 to post to the view.
$this->load->view('your_view_directory or view_page',['data'=>$data, 'data2'=>$data2, 'data3'=>$data3... so on ]);
}
et du côté de la vue vous pouvez simplement récupérer ces données:
Pour afficher vous pouvez simplement utiliser echo
,print
, print_r
. Et si vous voulez boucler la boucle, vous pouvez le faire aussi.
dans le contrôleur:
$data["result"] = $this->login_model->get_login(); // Get array value from DB..
$this->load->view('login-form',$data); // Pass the array to view
vue:
print_r($result); // print the array in view file
dans le contrôleur:
public function produit(){
$data = array("title" => "Books", "status"=>"Read","author":"arshad","company":"3esofttech",
"sujet":"l'informatique");
Données à Partir du Modèle de contrôleur
$this->load->model('bookModel');
$result = $this->bookModel->getMoreDetailsOfBook();
**Add *$result* from model to *$data* array**
$data['tableRows'] = $result;
$les données de Contrôleur pour Afficher
$this->load->view('admin/head',$data);
Et d'accès dans le fichier de vue points de vue/de l'utilisateur.php
<?php echo $data;
foreach($tableRows as $row){ echo
$row['startData']; } ?>