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;