Codeigniter: передача данных из контроллера для просмотра - PullRequest
30 голосов
/ 25 февраля 2012

Я хочу передать $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>

Ответы [ 13 ]

43 голосов
/ 25 февраля 2012

$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>
14 голосов
/ 26 февраля 2012

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

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

, например

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

view:
echo $hello;
6 голосов
/ 25 февраля 2012

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

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

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

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

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

5 голосов
/ 22 февраля 2017

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

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

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

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

<?php echo $hello;?>

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

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

3 голосов
/ 16 мая 2019

Вы можете создать свойство $data = [];внутри CI_Controller (путь: system / core / Controller.php) и сохраните все данные для отображения.Вы можете загрузить общие данные, такие как языки, меню и т. Д. В CI_Controller.Также вы можете добавить специальные данные для просмотра в контроллере.(пример: $this->data['message'] = "Hello world";) Наконец, вы можете передать $this->data для просмотра при загрузке (пример: $this->load->view('view_name',$this->data);)

Надеюсь, это поможет вам

2 голосов
/ 14 августа 2017

Вы можете сделать это следующим образом

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

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

и передать переменную в представление

echo $hello; 
1 голос
/ 10 июля 2017

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

$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 голос
/ 11 июня 2017

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

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

Модель

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

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

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 голос
/ 11 мая 2016

В вашем контроллере вы можете передать

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

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

echo $poll; 
0 голосов
/ 05 марта 2019

Если вы передадите

$data = your code
$this->load->view('your-page', $data);

и получите данные о вашем представлении как

<?php echo $data;?>

Это не будет работать, потому что ci не понимает этот образец.Если вы хотите передать контроллер формы значения для просмотра, чтобы вы могли попробовать это -

controller -

$data['any-name'] = your values;
$this->load->view('your-page', $data);

, то, по вашему мнению, вы можете получить эти данные с помощью -

<?php echo $any-name;?>

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...