2011-03-29 94 views
0

有什麼理由,當我包括在我的控制器Email組件,而無需編寫任何代碼吧:CakePHP的電子郵件組件

var $components = array('Email'); 

我得到一個致命的錯誤說:

Fatal error: Call to a member function read() on a non-object 

我想這是與$ Session變量相關,當我將組件註釋掉時,錯誤消失。

+0

1.哪個控制器? 2.在哪個文件和行中出現此錯誤? 3.這一行是什麼? – Tim 2011-03-29 14:28:56

+0

該組件被加載到AppController中,並且該錯誤位於另一個方法內的AppController的第116行:$ layout = $ this-> Session-> read('shop.layout.style'); – woodscreative 2011-03-29 14:41:21

+0

肯定會與Session-> read()發生衝突,只是將一個新的應用程序添加到AppController組件中,並設置另一個控制器,並在名爲$ this-> Session-> read('test')的index ;和我得到相同的錯誤/問題。 – woodscreative 2011-03-29 14:55:26

回答

0

它看起來會話組件是默認加載的,但如果我在我的AppController中定義了var $ components = array('Email')並且不包含數組中的Session,那麼它將被刪除。

0

您的意見後,我建議你寫var $components = array('Email', 'Session'),這應該讓你擺脫你的錯誤。 問題是,AppController組件不會與默認值合併。這意味着,如果您僅使用「電子郵件」聲明組件,則會話組件將會丟失,因此您將得到此錯誤,因爲$ this-> Session不是對象。