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>

30

Решение

$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>
43

Другие решения

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

$ data [‘a’] в контроллере становится $ a на ваш взгляд. ($ data не будет, по вашему мнению, станет доступным только индекс)

например

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

view:
echo $hello;
13

Представление не будет называть данные «данными»

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

Вы хотите echo по мнению так: echo $stuff; не echo $data;

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

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

6

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

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

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

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

<?php echo $hello;?>

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

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

5

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

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

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

echo $poll;
1

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

$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
1

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

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

модель

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"]; ?>

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

1

ты можешь сделать это так

определенный массив в контроллер

$data['hello'] = "hello";

и передать переменную Посмотреть

echo $hello;
1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector