Я хочу пройти $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 данных, просто обратите внимание на имя и сделайте его массивом.
Obs²: Для использования данных используйте ключ массива с эхом.
В вашем контроллере вы можете пройти
$data['poll'] = "Your results";
По вашему мнению вы можете позвонить
echo $poll;
В контроллере:
$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
Хорошо, таким образом я наконец решил это. Вы должны действительно иметь модель (это очень помогает)
В вашей модели сделайте что-то вроде
модель
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;
}
}
Теперь, если у вас больше идентификатора, скажем имя poll #, вы можете добавить его в массив.
Теперь в вашем контроллер делать
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);
}
И, наконец, в ПОСМОТРЕТЬ положил
<? echo $a["id"]; ?>
Это большая помощь. Я выяснил это путем тестирования, и это работает для меня.
ты можешь сделать это так
определенный массив в контроллер
$data['hello'] = "hello";
и передать переменную Посмотреть
echo $hello;