php 消息:未定义的变量:资料

zd287kbt  于 2023-01-12  发布在  PHP
关注(0)|答案(6)|浏览(107)

当我尝试在CodeIgniter中运行以下应用程序时,出现以下错误:

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: data
Filename: views/blog.php
Line Number: 1

我花了将近一个小时的时间想弄明白这个问题,但我还是没办法。我的观点是这样的:

<?php foreach($data->result() as $row): ?>
<h1><?php echo $row->title; ?></h1>
<p><?php echo $row->post; ?></p>
<?php endforeach; ?>

我的控制器看起来像这样:

<?php
    class Blog extends CI_Controller {  
    public function index()
    {
        $this->load->database();
        $data = $this->db->get('posts');

        $this->load->helper('url');
        $this->load->view('header');
        $this->load->view('blog', $data);
        $this->load->view('footer');
    }
}

有人知道怎么修吗?

uurv41yg

uurv41yg1#

您必须更改控制器和视图
通过数据发送的数组应该是这样的:

$data['post'] = $this->db->get('posts');

你认为:

<?php foreach($post->result() as $row): ?>
<h1><?php echo $row->title; ?></h1>
<p><?php echo $row->post; ?></p>
<?php endforeach; ?>

codeiginter使用$data数组将变量发送到视图,如果你想发送一些东西到视图中,可以在$data中放入$data ['key'] = $瓦尔;

pb3skfrl

pb3skfrl2#

尝试在视图的第一行使用$blog而不是$data
我不确定,但您将$data分配给控制器中名为blog的键...

odopli94

odopli943#

变量必须作为数组中的键-值对传递给视图。Here对此进行了解释。

afdcj2ne

afdcj2ne4#

我认为这个错误通知不是来自控制器,而是来自视图(blog.php)。您忘记了将$data传递给视图。您应该将传递给视图的变量重新构造为如下形式:

$data['data'] = $this->db->get('posts');
$this->load->view('blog', $data);
iqih9akk

iqih9akk5#

请像这样组织你的帖子模型

public function __construct()
        {
                $this->load->database();

        }



    public function get_posts(){



            $query=$this->db->get('posts');
            return $query->result_array();





    }

    }

和像这样的后控制器

public function index()
            {

           $data['posts']=$this->Post_model->get_posts();  



        $this->load->view('templates/header');
        $this->load->view('posts/index.php', $data);
        $this->load->view('templates/footer');

}

并在您的视图文件中以这种方式回显内容:)

<?php foreach($posts as $post): ?>

<h3><?php echo  $post['post_title'];?></h3>
<small><?php echo  $post['post_date'];?></small>
<p><a href="<?php echo site_url('/posts/'.$post['post_title']);?>">Read more</a></p>

<?php   endforeach;?>
cotxawn7

cotxawn76#

在控制器文件中,如果要消除此错误,请写入

$data['variable-name']

然后在视图文件中,使用$variable_name而不是$data,即

<?php foreach($variable_name->result() as $row): ?>

相关问题