CodeIgniter, передает данные из модели в контроллер для использования в представлении
Я хочу передать данные, запрошенные в моей модели, контроллеру, для этого я использую return $data. Затем в контроллере я использую $this->load->view('my_view', $data);
Из моего понимания var_dump($data);
в представлении должны отображаться результаты запроса... Это не тот случай. Я получаю "неопределенные переменные данные" и NULL из var_dump($data);
.
Вот моя модель:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Manage_accounts_model extends CI_Model {
public function index() {
//
}
public function get_users(){
$data = array();
$data['query'] = $this->db->get('users');
return $data['query'];
}
}
Вот мой контроллер
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Manage_accounts extends CI_Controller {
public function index() {
$this->load->view('template/header');
$this->load->model('manage_accounts_model');
$this->load->view('template/footer');
$this->load->model('manage_accounts_model');
$res = $this->manage_accounts_model->get_users();
if($res){
$this->load->view('manage_accounts_view', $data);
} else {
echo "Fail";
}
}
}
И, наконец, мое мнение:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
?>
<div class="container">
<h1><?php if($title){ echo $title; } ?></h1>
<?php var_dump($data['query']); ?>
</div>
5 answers
Я думаю, что ты совершил 2 ошибки
- забудьте извлечь результат в массив
- забудьте передать данные для просмотра
Измените класс модели.
public function get_users(){
$data = array();
$query = $this->db->get('users');
$res = $query->result();
return $res;
}
Изменение класса контроллера
public function index() {
$this->load->view('template/header');
$this->load->model('manage_accounts_model');
$this->load->view('template/footer');
$this->load->model('manage_accounts_model');
$res = $this->manage_accounts_model->get_users();
if($res){
$data['result'] = $res;
$this->load->view('manage_accounts_view', $data);
} else {
echo "Fail";
}
На ваш взгляд
print_r($result);
Причина $data
не определена в вашем контроллере попробуйте
$data = array();
if($res){
$data['res'] = $res;
$this->load->view('manage_accounts_view', $data);
}
Затем перейдите на просмотр
<?php var_dump($res); ?>
Также вы отправляете весь запрос из модели, а не результат, для получения нужного вам результата, например:-
public function get_users(){
$query = $this->db->get('users');
return $query->result();
}
Ты забыл об этом
$data['resultSet']=$res;
Теперь получите доступ к результату в виде $res в вашем коде
Просто нужно сделать переход в контроллер
$data['query'] = $this->manage_accounts_model->get_users();
if($data){
$this->load->view('manage_accounts_view', $data);
}else{
echo "Fail";
}
Вы не передали ключевую переменную query
для просмотра.
Изменение:
$res = $this->manage_accounts_model->get_users();
if($res) {
$this->load->view('manage_accounts_view', $data);
Кому:
$data['query'] = $this->manage_accounts_model->get_users();
if($data['query']){
$this->load->view('manage_accounts_view', $data);
...