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>
Ответы
Ответ 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);
)
Я надеюсь, что это поможет вам