我是CodeIgniter(2.03)的新手,我遇到以下问题:
这是我的主要模板(视图):
<?php $this->load->view('backOffice/bo_header_in'); ?>
<?php $this->load->view($bo_main_content); ?>
<?php $this->load->view('backOffice/bo_footer_in'); ?>
这是我的模特:
<?php
class Back_office_users extends CI_Model
{
public function getAllUsers ()
{
$query = $this->db->query("SELECT * FROM users");
if ($query->num_rows() > 0) {
foreach ($query->result() as $rows) {
$users[] = $rows;
}
return $users;
}
}
}
这是我的控制器:
<?php
class Dashboard extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->is_logged_in();
}
public function index ()
{
$this->load->model('back_office_users');
$users['rows'] = $this->back_office_users->getAllUsers();
$data['bo_main_content'] = "backOffice/dashboard";
$this->load->view('backOffice/bo_template_in', $data, $users);
// if I pass the variable like this it works just fine...
//$this->load->view('backOffice/users', $users);
}
public function is_logged_in()
{
$is_logged_in = $this->session->userdata('is_logged_in');
if (!isset($is_logged_in) || ($is_logged_in != true)) {
$this->accessdenied();
}
}
public function accessdenied ()
{
$data['bo_main_content'] = 'backOffice/accessdenied';
$this->load->view('backOffice/bo_template', $data);
}
public function logout ()
{
$this->session->sess_destroy();
redirect('backOffice/index');
}
}
仪表板视图如下:
<?php
print_r($users);
?>
我收到以下错误:
遇到PHP错误
严重性:注意
消息:未定义的变量:用户
文件名:backOffice / dashboard.php
行号:9
任何人都可以解释一下如何解决这个问题?我在不使用模板的情况下创建了另一个视图,并打印了数组。
答案 0 :(得分:3)
您没有将$users
变量传递给第二个(嵌套)视图。
我建议将$users
添加到$data
数组,然后在第一个视图中将$users
数组传递给嵌入视图。所以,在你的控制器中:
public function index () {
/* stuff... */
$data['users']['rows'] = $this->back_office_users->getAllUsers();
$data['bo_main_content'] = "backOffice/dashboard";
/* stuff... */
$this->load->view('backOffice/bo_template_in', $data);
}
然后在主视图中:
<?php $this->load->view($bo_main_content, $users); ?>
然后在仪表板视图中:
<?php
print_r($rows);
?>
这是因为在主视图中,如您所知,CodeIgniter会将$data
的所有元素转换为变量,因此我们最终会得到$users
个变量。 $users
是一个包含rows
的数组,因此当我们将$users
传递到第二个视图时,第二个视图会将$users
的所有元素转换为查看变量,因此我们现在可以访问$row
。