2012-08-05 121 views
0

我是CI的新手。我使用MY_Controller.php作爲主控制器。我可以打開ajax作爲div#頁面加載器。現在,我的問題是,雖然我加載/關於頁面,我得到了服務模型的數據庫條目。我怎樣才能得到有關控制器的表格?Codeigniter消息:未定義的變量:infos

.. 
    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_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 

爲什麼c螞蟻我得到關於表?

+1

難道你想在'about view file'而不是'$ infos'中寫'$ records'?在about控制器中,您將'$ this-> data ['records']'分配給'$ this-> data ['infos']'。 – complex857 2012-08-05 18:05:32

+0

我改變了$ this-> data ['infos']仍然是相同的錯誤。 – ytsejam 2012-08-05 18:08:07

回答

2

您在您的foreach中調用變量$infos,但它永遠不會作爲變量傳遞給您的視圖。

閱讀文檔約Adding Dynamic Data to the View

你要麼需要設置$data['infos']的東西,或者和我猜這就是你們希望,用$recordsforeach

以上回答您的具體,但在您爲源代碼提供回購之後,您遇到了一些問題。我高度建議您閱讀整個文檔,盯着Introduction: Getting Started,繼續教程,然後一般主題。

你在這裏遇到問題的原因是,你有你的routes.php設置,所有東西都被路由到執行view方法的Home控制器中。這個方法雖然接受你想要看到的頁面,但總是返回一個服務模型的提取。你的其他控制器根本沒有被執行。根據您的控制器設置,如果您只需刪除自定義路線,則http://theurl/about將路由至About控制器。要加載的默認方法是index,因此如果將視圖更改爲索引,則默認情況下會顯示該視圖。

+0

如果我使用記錄。我得到了服務模型的結果。 – ytsejam 2012-08-05 18:16:15

+0

你的渲染邏輯似乎有一些有趣的東西,我要更新我的答案。一秒 – 2012-08-05 18:36:30

+0

瑞恩,我試過$ data ['records'] =和$ data ..如果我用那個連我的home view給了我..未定義的變量:記錄。你能給我更多的信息嗎? – ytsejam 2012-08-05 18:51:09