Подтвердить что ты не робот

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

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

<?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>
4b9b3361

Ответ 1

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

Ответ 2

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

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

например.

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

view:
echo $hello;

Ответ 3

В представлении не будут отображаться данные данных

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

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

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

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

Ответ 4

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

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

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

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

<?php echo $hello;?>

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

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

Ответ 5

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

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

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

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

echo $hello; 

Ответ 6

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

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

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

echo $poll; 

Ответ 7

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

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

модель

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

И наконец в VIEW поставить

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

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

Ответ 8

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

$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

Ответ 9

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

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. И если вы хотите перебрать его, вы также можете это сделать.

Ответ 10

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

public function product() {

$data = array("title" => "Books", "status"=>"Read","author":"arshad","company":"3esofttech",

"субъект": "информатика" );

Данные с модели на контроллер

$this->load->model('bookModel');
$result = $this->bookModel->getMoreDetailsOfBook();

**Add *$result* from model to *$data* array**  
$data['tableRows'] = $result;

$данных с контроллера для просмотра

$this->load->view('admin/head',$data);

И для доступа в файл вида просмотров /user.php

<?php  echo $data;
 foreach($tableRows as $row){ echo
 $row['startData']; } ?>

Ответ 11

Вместо

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

Делать

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

В файле контроллера и контроллера будет передавать данные, имеющие привет в виде строки в results_view и в файле вида вы можете просто доступа

echo $hello;

Ответ 12

Если вы пройдете

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

и получить данные на ваш взгляд как

<?php echo $data;?>

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

контроллер -

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

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

<?php echo $any-name;?>

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

Ответ 13

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

Я надеюсь, что это поможет вам