0

我是 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。我看到它必须将数据从控制器传递到视图,但我无法弄清楚并且已经尝试了几天,但总是遇到问题。

4

1 回答 1

1

你没有传递$data到你的视野。你的控制器应该是这样的:

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

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

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

您的视图还应该检查 if $newsis FALSE,因为foreach如果您遍历 value ,您会遇到一些问题FALSE。您的模型也应该返回result_arraynot resultforeachcam't loop over objects..

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!";
    }
?>

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

于 2013-05-21T15:25:20.497 回答