在笨

2011-07-12 69 views
2

即時自動加載一個名爲如我笨應用「渲染」庫收到錯誤。 庫的完整代碼:在笨

 
class Render extends CI_Controller { 
    public function template($template, $view, $extra_css, $extra_js) { 
     $data = array(); 
     if (isset($view)) { 
      $data['view'] = $view; 
     } 
     if (isset($extra_css)) { 
      $data['extra_css'] = $extra_css; 
     } 
     if (isset($extra_js)) { 
      $data['extra_js'] = $extra_js; 
     } 
     $template = $this->load->view("templates/$template", $data, TRUE); 
     echo $template; 
    } 

} 

這個庫工作正常,但問題是,每當我手動或通過編輯自動加載文件加載這個庫,我當我在任何加載任何模型得到一個錯誤,我控制器。

 
A PHP Error was encountered 

Severity: Notice 

Message: Undefined property: Home::$my_model_name 

Filename: controllers/home.php 

Line Number: 11 

這裏行號10和11:

 
$this->load->model('my_model_name'); 
$this->my_model_name->my_model_method(); 

,我也嘗試過使用:

 
$this->load->model('my_model_name', 'My_model'); 
$this->My_model->my_model_method(); 

我控制器 「家」 的代碼是:

 
class Home extends CI_Controller { 
    function __construct() { 
     parent::__construct(); 
    } 
    public function index() 
    { 
     $this->load->model('my_model_name'); 
     $this->my_model_name->index(); 
    } 
} 

我試圖添加一個__construct()方法到我的庫b仍然沒有運氣。

+0

你可以發佈控制器/ home.php的代碼嗎? –

+0

@Ahmed Nuaman:當然,我剛纔編輯後,請再次檢查。 –

+0

我沒有看到你要加載你的'Render'庫...你是不是想將其加載到你的模型'my_model_name' ???? – jondavidjohn

回答

6

這樣做

class Render extends CI_Controller 

你沒有創建一個庫,但控制器!爲了創建一個庫,只需創建該類並將其放入庫文件夾。

你的庫中,如果你想使用CI的加載器加載模式,爲前,您需要實例主要CI類。

$CI = & get_instance(); 

喜歡的東西(文件application/libraries/render.php):

class Render { 

     var $CI; 

     function __construct() 
     { 
     $this->CI = &get_instance(); 
     } 

     public function template($template, $view, $extra_css, $extra_js) { 
     $data = array(); 
     if (isset($view)) { 
      $data['view'] = $view; 
     } 
     if (isset($extra_css)) { 
      $data['extra_css'] = $extra_css; 
     } 
     if (isset($extra_js)) { 
      $data['extra_js'] = $extra_js; 
     } 
     $template = $this->CI->load->view("templates/$template", $data, TRUE); 
     return $template; 
    } 
} 

然後你可以你希望你的庫,模型,其他庫裏面$CI->load一切,不管。
爲一個全面的說明,請參見Utilize CI resource within your library。你用通常的方式調用你的庫,$this->load->library('render')然後$this->render->whatever();

+1

感謝您的幫助很大,你救了很多我的時間,我沒有睡整晚只是通過Google找到這個問題的解決方案,但你在計算器的工作做得很好,太感謝了。 –