Codeigniter: passaggio dei dati dal controller alla vista

Voglio passare $data dal controller chiamato poll a results_view tuttavia sto ottenendo un errore variabile non definito.

 <?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 devono essere un arrays o un object: http://codeigniter.com/user_guide/general/views.html

 $data = arrays( '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> 

In parole povere,

$ data ['a'] nel controller diventa $ a nella tua vista. (i dati $ non esisteranno nella tua vista, solo l'indice diventerà disponibile)

per esempio

 Controller: $data['hello']='hellow world'; view: echo $hello; 

La vista non chiamerebbe i dati "dati"

Il controllore includerebbe un indice associativo (non sicuro se questa è la nomenclatura corretta) per i dati, ad es. "Roba" che guarda quindi $data['stuff']

Avresti echo nella vista così: echo $stuff; non echo $data;

Sono un violinista dal codice basso, ma mi piace davvero CodeIgniter, quindi scusami se ho questo culo per la cinciarella.

Un'altra cosa: sicuramente la tua function di constructor è un po 'sprecata. Tutto il caricamento di librerie e helper avviene con il file autoload.

Hai solo bisogno di creare un arrays, stai usando il codeigniter giusto?

Esempio sul controller:

 $data['hello'] = "Hello, world"; $this->load->view('results_view', $data); 

Nella pagina "results_view" devi solo:

 <?php echo $hello;?> 

Obs: è ansible creare n dati, basta fare attenzione nel nome e renderlo un arrays.

Obs²: per utilizzare i dati utilizzare la chiave della matrix con un eco.

Nel tuo controller puoi passare

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

Nella tua vista puoi call

 echo $poll; 

Ok, quindi ho finalmente risolto. Dovresti davvero avere un model (aiuta molto)

nel tuo model fai qualcosa di simile

Modello

 class poll_model extends CI_MODEL { function __construct() { $this-load->database(); } function get_poll { $this->db->query("SELECT * FROM table"); $row = $query->row(); $obj = arrays( 'id' => $row->id ); returb $obj; } } 

Ora se hai più di un id, dì nome del sondaggio # puoi aggiungere un arrays. Ora nel tuo controller fallo

 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); } 

E infine in VIEW put

 <? echo $a["id"]; ?> 

Questo è un grande aiuto. L'ho capito testando e funziona per me.

Ho visto tutte le risposte di cui sopra quindi ecco cosa faccio quando devo caricare i dati dal controller alla mia vista. Per passare i dati alla vista dal controller:

 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 ]); } 

E sul lato della vista Puoi semplicemente recuperare i dati: Per visualizzare Puoi semplicemente usare echo , print , print_r . E se vuoi scavalcarla, puoi farlo anche tu.

Nel controller:

 $data["result"] = $this->login_model->get_login(); // Get arrays value from DB.. $this->load->view('login-form',$data); // Pass the arrays to view 

In vista:

 print_r($result); // print the arrays in view file 

puoi farlo in questo modo $ data ['hello'] = "ciao";

in vista echo $ ciao;