2011-09-11 54 views
0

我正在使用代碼點火器2.0.3。代碼點火器form_validation加載致命錯誤

當我嘗試在我的控制器$裝載form_validation這個 - >負載>庫( 'form_validation'),我得到一個錯誤信息:

Fatal error: Call to a member function set_rules() on a non-object in D:\Installation\xampp\htdocs\MyApp\application\controllers\login.php on line 44

論的login.php線44,這是什麼我有:

$this->form_validation->set_rules('name', 'Name', 'trim|required');

當我在autoload.php中加載form_validation時,沒有錯誤。

這是怎麼發生的?

回答

2

我可以重現該錯誤的唯一方法就是觸發器library和位置validation

Causes Error - 
$this->form_validation->set_error_delimiters('name', 'Name', 'trim|required'); 
$this->load->library('form_validation'); 

Works - 
$this->load->library('form_validation'); 
$this->form_validation->set_error_delimiters('name', 'Name', 'trim|required'); 

加載類之前,我們在調用類的方法。這也可以解釋爲什麼自動加載驗證對您沒有任何錯誤。

+0

是的,這是唯一有意義的地方。這也可能是因爲他從錯誤的方法加載庫(儘管我懷疑這一點)。當他想在控制器類中的多個方法中使用它時,也許他會從'index()'而不是'__construct()'加載它。 –

+0

也會這樣做。也許這將是OP的第一個被接受的答案...: - | – Dawson

+0

我與OP有同樣的問題,我的代碼按正確順序排列,如下所示: '$ this-> load-> library('form_validation'); $這個 - > form_validation-> set_rules( '電子郵件', '電子郵件', '必要');' 導致同樣的問題,第一:'一個PHP錯誤遇到 嚴重性:注意 消息:未定義屬性:設爲首頁:: $ form_validation 文件名:controllers/homepage.php 行號:68',然後'致命錯誤:調用/ Users/jzuckerman/Sites /在線68上的盟友/應用程序/控制器/ homepage.php –

0

在Loader代碼中,CodeIgniter獲取Controller實例以通過「get_instance」方法添加加載的對象。

在您的Controller子類中,請嘗試運行該方法並查看返回的內容。

在我的情況下,我發現它是一個自動加載的控制器子類,我甚至沒有在我的任何代碼中使用或擴展 - 這只是一個存根類,我必須擁有所有的頁面控制器擴展一個基地站點控制器,然後輪流擴展CI_Controller。我強調我沒有擴展這個對象,而是繞過了我自己的頁面控制器中的CI_Controller。我不知道CodeIgniter如何得到我想要將我的實例添加到該對象的想法,但無論如何,修復方法是從自動加載庫列表中刪除該對象。

瘋了,但也許它也適用於你。