CodeIgniter $数据未从Controller传递到View

时间:2012-12-12 12:23:19

标签: php codeigniter

我的控制器没有将$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 个答案:

答案 0 :(得分:0)

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

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

在视野中

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

希望这有帮助

此致

iijb

答案 1 :(得分: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);
}

答案 2 :(得分:0)

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

  1. 通过var_dump()ing $ data ['users']检查模型的内容 - 这是一个对象吗? var_dump()$ data ['users'] - &gt; result()?
  2. 会发生什么
  3. 然后,视图中的var_dump()$ data - 它是否包含所有部分?
  4. 事实上,即使向我们展示您的模型功能也不能证明您获得了真实的数据结果。检查一下。您的代码一目了然,所以我认为这不存在问题。

答案 3 :(得分:0)

有一些非常基本的错误。所以离开那个控制器并进行健全性检查。首先确认您的欢迎视图正在运行。如果是转到欢迎控制器并将其放在索引方法

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

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

<?php echo $here ?>

您无需设置此项:$ data = array(); 然而有些人建议它,因为即使您不创建任何数据变量,如果它在视图中调用$ this-&gt; load-&gt; 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的视图 - 这可能会让人感到困惑! :-)