Codeigniter: передача данных с контроллера для просмотра

Я хочу передать $data из контроллера с именем poll в results_view однако я получаю неопределенную переменную ошибку.

 <?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 должен быть массивом или объектом: 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> 

Проще говоря,

$ data ['a'] в контроллере становится $ a в вашем представлении. ($ data не будет отображаться в вашем представлении, будет доступен только индекс)

например

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

Представление не будет вызывать данные данных '

Контроллер будет включать ассоциативный индекс (не уверен, что это правильная номенклатура) для данных, например «материал», выглядящий таким образом $data['stuff']

Вы бы echo в представлении так: echo $stuff; не echo $data;

Я скудный скрипач кода, но действительно люблю CodeIgniter, поэтому извините меня, если у меня есть эта задница о синице.

Еще одна вещь – безусловно, ваша функция конструктора – это немного отходов. Вся загрузка библиотек и помощников выполняется с файлом автозагрузки.

Вам просто нужно создать массив, вы правильно используете codeigniter?

Пример для контроллера:

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

На странице «results_view» вам просто нужно:

 <?php echo $hello;?> 

Obs: Вы можете создать n datas, просто обратите внимание на имя и сделайте массив.

Obs²: для использования данных используйте ключ массива с эхом.

В вашем контроллере вы можете пройти

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

По вашему мнению, вы можете позвонить

 echo $poll; 

Хорошо, поэтому я, наконец, решил. У вас действительно должна быть модель (она очень помогает)

в вашей модели сделайте что-то вроде

Модель

 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 ); returb $obj; } } 

Теперь, если у вас больше, чем id, укажите имя опроса #, которое вы можете добавить в массив. Теперь в вашем контроллере

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

И, наконец, в VIEW

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

Это большая помощь. Я понял это путем тестирования, и это работает для меня.

Я видел все ответы выше, поэтому вот что я делаю, когда мне приходится загружать данные с контроллера на мое представление. Передача данных К представлению с контроллера:

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

И на стороне просмотра Вы можете просто получить эти данные: для отображения Вы можете просто использовать echo , print , print_r . И если вы хотите перебрать его, вы также можете это сделать.

В контроллере:

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

Ввиду:

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

вы можете сделать это так: $ data ['hello'] = "hello";

in echo $ hello;