消息未定义变量:视图页面上的新闻

时间:2013-05-21 15:17:11

标签: php codeigniter

我是PHP和CodeIgniter的新手,并且看到有很多问题提到这一点并且一直在尝试它们但似乎没有任何效果。一切都在配置中自动加载,数据库正在运行,并且发布到数据库的功能正在运行,但写入视图页面根本不起作用。除了显示用户名,但为此我在视图页面上创建了一个新变量。

控制器

 public function ShowNews()
 {
     $data = array();
     $this->load->model('user');
     $data['news'] = $this->user->getNews();
     $this->load->vars($data);
}

模型

function getNews(){
    $q = $this->db->get('News');
    if($q->num_rows() > 0){
        return $q->result();
    }
    return FALSE;
}

查看

<?php foreach($news as $row) : ?>

<li><?php echo $row->Title;  ?> </li>
<li><?php echo $row->Date; ?></li>      

<?php endforeach; ?>

这是对新闻的错误编辑

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: news

Filename: admin/Pocetna.php

Line Number: 64
A PHP Error was encountered

Severity: Warning

Message: Invalid argument supplied for foreach()

Filename: admin/Pocetna.php

Line Number: 64

使用WAMP,NetBeans和CodeIgniter。我看到它必须是从控制器到视图传递数据的东西,但我无法弄清楚并且已经尝试了几天,但总是遇到问题。

1 个答案:

答案 0 :(得分:1)

您没有将$data传递给您的观点。你的控制器应该是这样的:

public function show_news()
{
    $this->load->model('user');

    $data = [];
    $data['news'] = $this->user->get_news();

    $this->load->view('news', $data);
}

您的观点还应该检查$news是否为FALSE,因为如果您循环使用值foreach,则FALSE会遇到一些问题。您的模型也应该返回result_array而不是resultforeach可以循环遍历对象..

public function get_news()
{
    $q = $this->db->get('News');

    return($q->num_rows() > 0) ? $q->result_array() : FALSE;
}

您的观点应如下所示:

<?php
    if($news !== FALSE)
    {
        foreach($news as $row)
        {
            echo "<li>{$row['title']}</li>";
            echo "<li>{$row['date']}</li>"; 
        }
    }
    else
    {
        echo "No news to see here!";
    }
?>

您的标题也不会与帖子中的错误相关联,因此这是标题中的错误解决方案。