0

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

..
    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);
        }
      }..

我的服务模型:

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 ?>

我想在关于页面中使用相同的方式。关于_型号:

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

为什么我不能得到 abouts 表?

4

1 回答 1

2

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

阅读有关向视图添加动态数据的文档

你要么需要设置$data['infos']一些东西,要么,我猜这是你想要的,$records在你的foreach

以上回答了您的具体问题,但是在您为您的来源提供了 repo 之后,您会遇到一些问题。我强烈建议您通读整个文档,先阅读简介:入门,然后继续阅读教程,然后阅读一般主题。

您在这里遇到问题的原因是您将 routes.php 设置为所有内容都被路由到Home执行该view方法的控制器中。此方法在接受您要查看的页面时始终返回服务模型的获取。您的其他控制器根本没有被执行。根据您的控制器设置,如果您只是删除自定义路由,http://theurl/about则会路由到About控制器。要加载的默认方法是index,如果您将视图更改为索引,那么它将默认显示。

于 2012-08-05T18:05:51.857 回答