-1

我的控制器没有传递$data给我的视图,我不知道为什么不传递。我正在重用以前项目中运行良好的代码,并且我当然理解 $data 传递是如何工作的想法。但也许我在复制代码时错过了什么?

我把变量$data['hello']放在那里只是为了测试目的。正如您从输出中看到的$hello那样,甚至没有通过。if失败并且else代码正确运行,这意味着正在加载视图文件本身。

控制器:

function users() {
    $data['title'] = 'users';
    $data['users'] = $this->main_m->get_users();
    $data['hello'] = 5;
    $this->load->view('users', $data);
}

看法:

<?php
echo $hello;
if ($users->num_rows != 0) {
    foreach ($users->result() as $user) {
    }
} else {
    echo "No users.";
}

输出(删节):

A PHP Error was encountered
Message: Undefined variable: hello
Line Number: 2
A PHP Error was encountered
Message: Undefined variable: users
Line Number: 3
A PHP Error was encountered
Message: Trying to get property of non-object
Line Number: 3

No users.

编辑:应要求提供更多信息:型号:

public function get_users($amount = 0, $offset = 0) {
    $this->db->from('users');
    $this->db->order_by('l_name', 'desc');
    if ($amount != 0)
        $this->db->limit($amount, $offset);
    return $this->db->get();
}
4

4 回答 4

0

我认为您可以通过一些简单的 var_dump() 检查来解决您的问题。

  1. 通过 var_dump()ing $data['users'] 检查模型的结果 - 这是一个对象吗?当你 var_dump() $data['users']->result() 会发生什么?
  2. 然后,您认为 var_dump() $data - 它包含所有部分吗?

问题是,即使向我们展示您的模型功能也不能证明您获得了真实的数据结果。检查那个。您的代码一目了然,所以我认为这不是问题所在。

于 2012-12-12T13:29:51.610 回答
0

我总是喜欢这样将您的模型更改为

$query = $this->db->get();
return $query->result();

并且在视图中

if (count($users)> 0) {
foreach ($users as $user) {
echo $user['name'];
}
} else {
echo "No users.";
}

希望这可以帮助

问候

iijb

于 2012-12-12T12:49:28.017 回答
0

有一些非常基本的东西是错误的。所以离开那个控制器并进行健全性检查。首先确认您的欢迎视图工作正常。如果是去欢迎控制器并将其放入 index 方法中

    $data['here'] = 'we are here' ;
    $this->load->view('welcome_message', $data);

然后在welcome.php 视图文件的某个地方

<?php echo $here ?>

你不需要设置这个: $data = array(); 但是有些人建议这样做,因为即使您不创建任何数据变量,如果它在视图中调用 $this->load->view('welcome_message', $data); 也不会出错。

最后我建议看看这个

  function users() {
     $data['title'] = 'users';
     $data['users'] = $this->main_m->get_users();
     $data['hello'] = 5;
     $this->load->view('users', $data);
 }

让我们看看你有一个名为 users 的方法,返回一个名为 users 的对象和一个名为 users 的视图——这可能会让人感到困惑!:-)

于 2012-12-13T03:05:32.383 回答
0

只需$data = array();在将一些数据发送到$data数组之前写入。

function users() {
$data = array();
$data['title'] = 'users';
$data['users'] = $this->main_m->get_users();
$data['hello'] = 5;
$this->load->view('users', $data);
}
于 2012-12-12T12:57:14.993 回答