2011-10-05 101 views
1

我使用CodeIgniter重新編碼我的網站。這是我第一次使用MVC或任何其他類型的開發模式。我正在使用CI網站上的視頻教程製作一個操場,並熟悉系統的協議。卡住CodeIgniter控制器類實現

我剛剛遇到了我的第一個問題,它與父類有關。

我在第二篇教程試圖使一個博客,有這樣的:

<?php 

class Test extends CI_Controller { 

    function Test() 
    { 
     parent::CI_Controller(); 

     $this->load->scaffolding('entries'); 
    } 

    function index() 
    { 
     $data['muck'] = 'test test test'; 
     $data['kookoo'] = 'howdy howdy hi'; 
     $data['hi'] = 'holla'; 
     $data['yo'] = 'fa la la'; 
     $data['zoom'] = '1234'; 
     $data['array'] = array('hi','howdy','hey','sup'); 
     $this->load->view('test_view', $data); 
    } 

} 

?> 

當我加載的頁面而不function Test()裏面的內容我注意到,系統無法找到「控制器」。我發現本教程使用的是舊版CI,並且「CI_Controller」是類Controller的專有名稱。現在有了上面的代碼,我得到這個錯誤:

Fatal error: Call to undefined method CI_Controller::CI_Controller() in /Users/michaelsanger/Sites/CodeIgniter/application/controllers/test.php on line 7 

我已經沖刷和我真的不知道爲什麼它不能定義它。

在此先感謝!

回答

4

你在混淆不同版本的東西,1.7版本主要關注PHP4風格的類構造(使用與構造函數同名的方法,而不是專用的魔法方法__construct() php 5)

此外,請注意腳手架不存在於最新版本。你沒有說你使用哪一個,我想V2。如果你使用的是舊版本,1)使用最新的:) 2)父類只是Controller。

它應該是這樣的

class Test extends CI_Controller { 

    function __construct() 
    { 
     parent::__construct(); 

     //$this->load->scaffolding('entries'); 
    } 

    function Test() 
    { 
     // this will call a method name test, so maps to a URL like Test/test 

    } 

} 

請注意,這不是需要擴展自父控制器,當然,除非你想「自動載入」一庫有它適用於所有方法。

CI以其優秀和簡單的文檔而聞名,所以無論何時您使用網上發現的教程,尤其是如果有點舊(用互聯網術語),養成去user_guide(它也出貨以及安裝文件,用於本地瀏覽),只要你有疑問或問題。

例如,檢查controllers頁面,你很快就會看到有什麼不對您的片段(和教程,截至今日)

UPDATE:

在路線你設置一個路線,映射到控制器(/方法)。 引述的changelog:

Version 2.0.0

Release Date: January 28, 2011 Hg Tag: v2.0.0

General changes 

PHP 4 support is removed. CodeIgniter now requires PHP 5.1.6. 
Scaffolding, having been deprecated for a number of versions, has been removed. 

所以我不知道你用腳手架的意思了。看看你的路線,CI期望一個名爲「scaffolding_trigger」的控制器,該控制器必須重新路由到控制器「腳手架」。如果有任何這些存在,你會得到404錯誤。 請選擇一個版本並堅持下去,不要混用任何東西!不要依賴教程,他們並不總是與最新的變化保持同步。

+0

fyi - 我在路線中創建了腳手架。php $ route ['scaffolding_trigger'] =「腳手架」; – LightningWrist

+0

和它給了我404找不到錯誤,這是比以前更好:) – LightningWrist

+1

@LightningWrist我更新了我的答案 –