Codeigniter: transmettre les données du contrôleur à la vue

je veux passer $data depuis le contrôleur nommé pollresults_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>
27
demandé sur Anirudha Gupta 2012-02-25 22:19:50

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>
42
répondu Lawrence Cherone 2015-05-08 13:13:22

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;
13
répondu itachi 2012-02-25 20:13:09

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.

6
répondu Tom 2013-02-22 13:34:48

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.

4
répondu Space 2017-02-22 13:52:59

dans votre controller vous pouvez passer

$data['poll'] = "Your results";

dans votre vue vous pouvez appeler

echo $poll; 
1
répondu VEER 2016-07-15 03:15:57

vous pouvez le faire de cette façon $data['bonjour'] = "bonjour";

dans la vue echo $bonjour;

1
répondu noushad mohammed 2017-08-14 08:16:02

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.

1
répondu Reavitor1 Christian in real li 2018-05-13 09:27:53

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.

0
répondu ankit suthar 2017-07-10 16:41:10

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
0
répondu kulandai yesu 2017-07-27 14:06:38

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']; } ?>
0
répondu Arshad Syed 2018-01-23 07:17:37