我想在模型中加載一些幫助程序。這個怎麼做?試圖用:如何從CodeIgniter中的模型加載助手?
${get_parent_class($this)}->load->helper ('text');
但仍收到錯誤
Fatal error: Call to a member function helper() on a non-object
我想在模型中加載一些幫助程序。這個怎麼做?試圖用:如何從CodeIgniter中的模型加載助手?
${get_parent_class($this)}->load->helper ('text');
但仍收到錯誤
Fatal error: Call to a member function helper() on a non-object
$this->load->helper('helpername')
GSTO回答$this->load->helper('helpername')
但如果你是在模型的方法,$this
只是指模型(類)的實例,而不是致CI全球。那不行!
相反,你需要加載CI全球然後加載助手:
// PHP 4
// $ci =& get_instance();
// PHP 5
$ci = get_instance();
$ci->load->helper('text');
這是正確的,但建議通過引用來分配,如下所示:$ ci =&get_instance();以確保您使用的是原始CodeIgniter對象而不是將其複製。請參閱http://codeigniter.com/user_guide/general/ancillary_classes.html(頁面底部)。 – 2011-01-27 11:06:31
我覺得幫手重複CI犯規檢查...... CI herlpers是程序文件,則可能如果包括烏爾幫手兩次烏爾控制器與ur模型(在該控制器中加載)具有相同的幫助器。也許做一個圖書館,而不是...
我可以看到我得到反對票W/O任何意見...通過檢查從核心CI的加載器類你可以看到助手方法不檢查如果助手之前已加載(它不包含在is_loaded()數組中,就像大多數通過加載工廠類加載的類一樣)...我不建議反正在模型和控制器中加載helper ... for ex我爲輸出編碼做了一個幫助,在控制器中(在我將數據傳遞給視圖之前)。這將是非常糟糕的,如果我改變視圖狀態兩次...
請參閱mwm的anweser而不是 – Ben 2010-10-31 04:46:45
$ this指的是應用程序實例,它不能從模型中可靠地訪問。 MWM說得對,通過分配(byref)CI應用程序的一個實例並使用$ CI-> load-> helper('foo')來訪問它。 – nageeb 2012-08-20 22:23:36
除非您已加載CI對象,否則助手不可用。見mwm的答案。 – 2015-08-04 13:04:31