Codeigniter消息:未定义的变量:信息

时间:2012-08-05 17:53:57

标签: codeigniter

我是CI的新手。我使用MY_Controller.php作为主控制器。我可以打开ajax作为div#page loader。现在,我的问题是虽然我加载/关于页面,但我获得了服务模型的数据库条目。我如何获得关于控制器的约会表?

..
    function render_page($view) {
        if( ! $this->input->is_ajax_request() )
        {
          $this->load->view('templates/header', $this->data);
        }
        $this->load->view($view, $this->data);

        if( ! $this->input->is_ajax_request() )
        {
         $this->load->view('templates/menu');
         $this->load->view('templates/footer', $this->data);
        }
      }..

我的services_model:

class Services_model extends CI_Model {

    function getAll() {
        $q = $this->db->get('services');
        if($q->num_rows() > 0){
        foreach ($q->result() as $row)
        {
            $data[] = $row;

            }
        return $data;
    }
    }
}

我的家庭主管:

public function view($page = 'home')
{
$this->load->helper('text');
$this->data['records']= $this->services_model->getAll();
if ( ! file_exists('application/views/pages/'.$page.'.php'))
{
    // Whoops, we don't have a page for that!
show_404();
}
$data['title'] = ucfirst($page); // Capitalize the first letter
$this->render_page('pages/'.$page,$data);
}

当我在主视图中使用它们时,没有问题我可以看到services_table:

<ul class="blog-medium">
<?php foreach($records as $row): ?>
<li>    
<div class="blog-medium-text">
<h1><a href="./post.html"><?php echo $row->title; ?></a></h1>
<p class="blog-medium-excerpt"><?php  echo $row->content; ?><br />
<a href="./post.html" class="read_more">Devamını Okumak için &rarr;</a></p>
</div>
<?php endforeach ?>

我想在about page中使用相同的方法。 About_model:

class About_model extends CI_Model {
    function getAll() {
        $q = $this->db->get('abouts');
        if($q->num_rows() > 0){
        foreach ($q->result() as $row)
        {
            $data[] = $row;

            }
        return $data;
    }
    }
}

关于控制器:

 public function view($page = 'about')
    {
    $this->load->helper('text');
    $this->data['records']= $this->about_model->getAll();
    if ( ! file_exists('application/views/pages/'.$page.'.php'))
    {
        // Whoops, we don't have a page for that!
    show_404();
    }
    $data['title'] = ucfirst($page); // Capitalize the first letter
    $this->render_page('pages/'.$page,$data);
    }

这是关于我的观点文件:

<div id="content">
<?php foreach($infos as $row): ?>
<h3 style="text-align: center;"> <?php echo $row->title; ?></h3>
<div class="hr">    </div>
<?php echo $row->content; ?>
<?php endforeach; ?>

我收到错误告诉我:

Severity: Notice
Message: Undefined variable: infos
Filename: pages/about.php
Line Number: 3

为什么我不能得到约会表?

1 个答案:

答案 0 :(得分:2)

您在$infos中调用变量foreach,但它永远不会作为变量传递给您的视图。

阅读有关Adding Dynamic Data to the View

的文档

您需要将$data['infos']设置为某些内容,或者我猜测您的意图,在$records中使用foreach

以上回答了您的具体问题,但在您提供了源代码的回购后,您遇到了一些问题。我高度建议您仔细阅读整个文档,盯着Introduction: Getting Started,继续阅读教程,然后阅读常规主题。

你遇到问题的原因是你的routes.php设置为一切都被路由到执行Home方法的view控制器。此方法虽然接受您要查看的页面,但始终返回服务模型的提取。您的其他控制器根本没有被执行。根据您的控制器设置,如果您只是删除自定义路由,http://theurl/about将路由到About控制器。要加载的默认方法是index,因此如果您将视图更改为索引,则默认情况下会显示。