Php Codeigniter中foreach循环中的未定义变量

Php Codeigniter中foreach循环中的未定义变量,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我是codeigniter的初学者,我正在制作一个用于学习的基本积垢。我在index.php中遇到了一个错误 <h2><?=$title?></h2> <?php foreach($posts as $post)?> <h3><?php echo $post['title'];?></h3>o <small class="post-date">Posted on:<?php echo $pos

我是codeigniter的初学者,我正在制作一个用于学习的基本积垢。我在index.php中遇到了一个错误

<h2><?=$title?></h2>

<?php foreach($posts as $post)?>
<h3><?php echo $post['title'];?></h3>o
<small class="post-date">Posted on:<?php echo $post['created at'];?>         </small><br>
<?php echo word_limiter($post['body'],60);?>
<p><a class="btn btn-default" href="<?php echo site_url('/posts/' .$post['slug']);?>">read more</a></p>
<?php endforeach;?>

o
发布日期:

遇到PHP错误
严重性:注意
消息:未定义变量:posts
文件名:posts/index.php
行号:2
回溯:
文件:/opt/lampp/htdocs/codeigniter/application/views/posts/index.php
行:2
函数:\u错误\u处理程序

文件:/opt/lampp/htdocs/codeigniter/application/controllers/Posts.php
行:23
功能:查看

文件:/opt/lampp/htdocs/codeigniter/index.php
行:315
功能:需要一次

我的控制器是

<?php
class Posts extends CI_Controller {

public function index(){
    $data['title']='Latest Posts';
    $data['posts']=$this->Post_model->get_posts();

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

public function view($slug=NULL)
{
    $data['post'] = $this->Post_model->get_posts($slug);

    if(empty($data['post'])){
        show_404();
    }

    $data['title']=$data['post']['title'];
    $this->load->view('templates/header');
    $this->load->view('posts/view', $data);
    $this->load->view('templates/footer');
}

public function create(){
    $data['title'] = 'create post';

    $this->form_validation->set_rules('title','Title','required');
    $this->form_validation->set_rules('body','body','required');

    if($this->form_validation->run() === false) {

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

    } else {

    $this->Post_model->create_post();

    redirect('posts');

    }

}

public function delete($id) {
    $this->Post_model->delete_post($id);
    redirect('posts');
}

public function edit($id)  {

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

    if(empty($data['post'])){
        show_404();
    }

    $data['title'] = 'edit post';

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

public function update()
{
    $this->Post_model->update_post();
    redirect('posts');
}

}

在控制器上的编辑功能上,您有
编辑($id)

但是,在加载模型的地方,您有
get\u posts($slug)
它应该是
get\u posts($id)

并将
$data['post']
更改为
$data['posts']

关于控制器的when-load模型

改变

$this->Post_model->get_posts($id);

关于Autoload.php

改变

$autoload['model'] = array('Post_model');

并在autoload.php中加载数据库,使生活更轻松

$autoload['libraries'] = array('database');

等等,对不起,我正忙着上传代码。请再次查看。这与foreach循环中使用的$posts变量有关。您自动加载了模型吗?您没有在控制器中加载模型,因此我们假设您在配置中的autoload.php中有该模型。在呈现视图之前,请通过print_r()或var_dump转储数据数组,以查看您从模型中获得的信息是的,我有。$autoload['model']=array('Post_model');我的$post[body]和所有表值都加载得很好。模型返回title和body的值。但是$post没有定义
$this->post_model->get_posts($id);
$autoload['model'] = array('Post_model');
$autoload['model'] = array('post_model');
$autoload['libraries'] = array('database');