2011-10-04 36 views
0
加載視圖

我一直在努力實現在引用的解決方案:錯誤當My_Controller

Error when trying to load view in my_controller

不知道爲什麼,但集錦指示在我行語法錯誤:

parent::load->view('common/header_out'); 

...當我執行時被解釋者借調:「意外的T_OBJECT_OPERATOR」

編輯:以前我試過使用:

$this->load->view('common/header_out'); 

...這產生如下錯誤:

警告:包括(應用/錯誤/ error_php.php)[]:未能打開流:沒有這樣的文件或>目錄in /home/uom2/www/system/core/Exceptions.php on line 167

Warning:include()[function.include]:打開包含的application/errors/error_php.php失敗>(include_path = '。:/ usr/local/lib/php:/ usr/local/php5/lib/pear')in /home/uom2/www/system/core/Exceptions.php on line 167

我正在使用CI 2.0。

任何幫助,將不勝感激。

應用/核心/ Uom_Controller.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Uom_Controller extends CI_Controller 
{ 

    public $data = array(); // Array to store data - passed to views. 
protected $view_path = null; // Here to overide the view path if n 

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

    } 

    protected function check_session() 
    { 
     //Here goes your function 
    } 

protected function render() { 


     $data['page_title'] = 'Your title'; 
    $data['page_title'] = 'Your title'; 

     parent::load->view('common/header_out'); 
     parent::load->->view('home/home', $data); 
     parent::load->->view('common/foot'); 

echo "view rendered: ".date('Y-m-d H:i:s'); 



} 

} 

控制器/家/ home.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Home extends Uom_Controller { 

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

     // Set the view path manually for this method. 
     $this->view_path = 'home/home.php'; 

    } 


    function __destruct() { 
     $this->render(); 
    } 


    public function index() 
    { 
     echo "home updated"; 

    } 


    public function out() 
    { 
     echo "logout"; 
     echo "<br>"; 
     echo $this->view_path; 
     echo "<br>"; 

    } 


} 

明顯的意圖是類同的SO張貼在這篇文章的頂部:我想$ this-> render();被調用並呈現我的頁眉,正文和頁腳。

(我的下一個任務是將認證檢查添加到此MY_Controller模式,所以我希望whaever解決方案適用於呼叫的意見也適用於機型。

謝謝大家,我真的花了幾個小時試圖找到該解決方案beforw再次轉向SO。

回答

0

呃,這裏的問題:

function __destruct() { 
    $this->render(); 
} 

如預期,由於道路一切都繼承 據對here

__destruct此言菲爾醫生不起作用。

...並進一步下跌的頁面,這似乎是一個更詳細的解釋是有道理的:

的問題是,該控制器是CI超級,一旦你 摧毀,你失去所有訪問CI。而且你不必在銷燬過程中的任何 控制,所以你不知道什麼還是 accessable,什麼不是。

使用比清理行動其他任何事情 破壞當前對象是一個很糟糕的主意__destruct()...

簡短的回答是,事情的工作,只要你是不是從調用的方法來自「_destruct」的擴展類。

希望這可以幫助其他人。

+0

看起來很奇怪,你只接受過3個答案,甚至不是你自己的答案!這個功能是有原因的。永遠不要關心一些人在努力寫出完美的答案時會感到沮喪,只是爲了讓它失望。 –

0

我覺得你的問題是你調用父::負載>視圖,而不是$這個 - >負載>視圖

+0

對不起,我原來的職位我忘了,我已經開始了這種方式和產生的錯誤是什麼導致我發現後http://stackoverflow.com/questions/4708639/error-when-trying-在我的控制器中加載查看 – shamelesshacker