2010-03-18 122 views
0

我想學習codeigniter(下面的書),但不明白爲什麼網頁出來空。codeigniter新手問題

我控制器

class Welcome extends Controller { 

    function Welcome() 
    { 
     parent::Controller(); 
    } 

    function index() 
    { 
     $data['title'] = "Welcome to Claudia's Kids"; 
     $data['navlist'] = $this->MCats->getCategoriesNav(); 
     $data['mainf'] = $this->MProducts->getMainFeature(); 
     $skip = $data['mainf']['id']; 
     $data['sidef'] = $this->MProducts->getRandomProducts(3, $skip); 
     $data['main'] = "home";  
     $this->load->vars($data); 
     $this->load->view('template'); 
    } 

的觀點是:

<--doctype declaration etc etc.. --> 
</head> 
<body> 
    <div id="wrapper"> 
     <div id="header"> 
      <?php $this->load->view('header');?> 
     </div> 

     <div id='nav'> 
      <?php $this->load->view('navigation');?> 
     </div> 

     <div id="main"> 
      <?php $this->load->view($main);?> 
     </div> 

     <div id="footer"> 
      <?php $this->load->view('footer');?> 
     </div> 

    </div> 
</body> 
</html> 

現在我知道該模型是經過重新回到正確的變數,但頁面出現完全空白。我希望至少看到一個錯誤,或基本的HTML結構,但頁面只是空的。此外,即使我修改它,控制器也不起作用,如下所示:

function index() 
{ 
    echo "hello."; 
} 

我在做什麼錯? 一切工作,直到我對模型做了一些更改 - 但即使我刪除所有這些新的更改,頁面仍然是空白..我真的很困惑!

感謝, P.


我隔絕,讓我的問題的功能。 那就是:

function getMainFeature() 
{ 
    $data = array(); 
    $this->db->select("id, name, shortdesc, image"); 
    $this->db->where("featured", "true"); 
    $this->db->where("status", "active"); 
    $this->db->orderby("rand()"); 
    $this->db->limit(1); 
    $Q = $this->db->get("products"); 
    if ($Q->num_rows() > 0) 
    { 
     foreach($Q->result_arry() as $row) 
     { 
      $data = array(
       "id" => $row['id'], 
       "name" => $row['name'], 
       "shortdesc" => $row['shortdesc'], 
       "image" => $row['image'] 
       ); 
     } 
    } 
    $Q->free_result(); 
    return $data; 
} 

我很確信,必須有一個語法錯誤的地方 - 但仍然不明白爲什麼它不顯示任何錯誤,即使我已經設置了使用error_reporting E_ALL在索引函數..

+0

Q-> result_arry() - right是result_array()。 (或者它只是一個錯字?) – DCrystal 2010-03-19 01:44:00

+0

well spotted :)這是代碼中的一個實際錯誤,但是我已經發現它自己並沒有解決問題.. – Patrick 2010-03-20 12:21:07

+0

如果你已經孤立到一個模型中的函數不要發佈,所以我們可能會發現錯誤。 – Eric 2010-03-19 02:55:09

回答

2

第一個端口是在命令行上對您的控制器以及您更改並恢復的所有模型運​​行php -l。

% php -l somefile.php 

這可能是其中一個文件存在解析錯誤,並且您的php.ini中的顯示錯誤設置爲關閉。您應該將Display Errors設置爲開發並關閉生產,以防尚未開發。

(編輯:。在上面你已經錯過了斷之類的收盤}的例子也許是)

+0

錯誤報告是= php.ini中的E_ALL。 我不熟悉命令行 - 我該怎麼做? (缺少的括號只是一個剪切n粘貼錯誤..) 我已經在生成錯誤的模型之一中隔離了一個函數(例如,如果我拿出那個函數,控制器類的作品,即它輸出「hello」;但是,模板沒有加載,但沒有出現錯誤!) – Patrick 2010-03-18 16:28:58

+0

無論您將error_reporting設置爲什麼,如果display_errors關閉,錯誤仍將不會顯示在屏幕上。 – 2010-03-19 13:50:41

+0

謝謝,這解決了它。已經設置了display_errors,所以我能夠看到錯誤並修復它! – Patrick 2010-03-19 18:34:41

1

確保使用error_reporting在index.php文件設置爲E_ALL和發佈您的代碼爲模型有問題。

通過你的功能看後,我懷疑它是由$this->db->orderby("rand()"); 對於活動的記錄,則會導致這應該是$this->db->order_by('id', 'random');

注意orderby已被棄用,你仍然可以使用它,但現在新的函數名order_by

-1

不確定,但也可能由php的「display_errors」設置爲false。 You can change it在您的php.ini文件中。

+0

投下來複制我的答案的一部分。 – 2010-03-19 13:53:21

+0

p.g.l.hall,對不起,我只是沒有注意到它... – DCrystal 2010-03-19 14:03:42