Je souhaite passer $data
du contrôleur nommé poll
au results_view
, mais je reçois 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>
$data
devrait être un tableau ou 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 le contrôleur devient $ a dans votre vue. ($ data n'existera pas dans votre vue, seul l'index sera disponible)
par exemple.
Controller:
$data['hello']='hellow world';
view:
echo $hello;
La vue n'appellerait pas les données 'données'
Le contrôleur inclurait un index associatif (ne sachant pas si la nomenclature est correcte) pour les données, par exemple, 'trucs' ressemblant ainsi $data['stuff']
echo
dans la vue: echo $stuff;
pas echo $data;
Je suis un fiddler de code très humble mais j'aime beaucoup CodeIgniter, alors excusez-moi si j'ai ce cul de mésange.
Une dernière chose: votre fonction constructeur est sûrement un gaspillage. Tout ce chargement des bibliothèques et des helpers se fait avec le fichier autoload.
Vous avez juste besoin de créer un tableau, vous utilisez Codeigniter, non?
Exemple sur le contrôleur:
$data['hello'] = "Hello, world";
$this->load->view('results_view', $data);
Dans la page "results_view", il vous suffit de:
<?php echo $hello;?>
Obs: Vous pouvez créer n données, faites attention au nom et faites-en un tableau.
Obs²: Pour utiliser les données, utilisez la clé du tableau avec un écho.
vous pouvez le faire de cette façon
tableau défini dans controller
$data['hello'] = "hello";
et passer variable à view
echo $hello;
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
En vue:
print_r($result); // print the array in view file
Ok, je l'ai finalement résolu. Vous devriez vraiment avoir un modèle (ça aide beaucoup)
Dans ton modèle, fais 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 identifiant, dites le nom du poll #, vous pouvez ajouter un tableau. Maintenant dans votre contrôleur do
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 dansVOIRput
<? echo $a["id"]; ?>
C'est une grande aide. Je l'ai compris en testant et cela fonctionne pour moi.
Dans votre contrôleur, vous pouvez passer
$data['poll'] = "Your results";
À votre avis, vous pouvez appeler
echo $poll;
Dans le contrôleur:
produit de fonction publique () {
$data = array("title" => "Books", "status"=>"Read","author":"arshad","company":"3esofttech",
"sujet": "informatique");
Données du modèle au contrôleur
$this->load->model('bookModel');
$result = $this->bookModel->getMoreDetailsOfBook();
**Add *$result* from model to *$data* array**
$data['tableRows'] = $result;
$ data from Controller to View
$this->load->view('admin/head',$data);
Et pour accéder au fichier view Views/user.php
<?php echo $data;
foreach($tableRows as $row){ echo
$row['startData']; } ?>
Au lieu de
$data = "hello";
$this->load->view('results_view', $data);
Faire
$data['hello'] = 'hello';
$this->load->view('results_view', $data);
Dans votre fichier de contrôleur, le contrôleur enverra data having hello as string à results_view.
echo $hello;
J'ai vu tous 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 en profiter, vous pouvez également le faire.