2012-06-09 21 views
2

無法正常工作我試着從本教程http://maestric.com/doc/php/codeigniter_404自定義404不工作時,試圖調用控制器

我控制器error.php自定義404頁使用:

class Error extends Controller{ 


    function error_404() 
    { 
     $CI =& get_instance(); 
     $CI->output->set_status_header('404'); 
     echo "error bro"; 

    } 
    } 

當我打開鏈接本地主機/馬丁/ admin/blablabla,其中controoler admin中沒有函數blablabla()。 的輸出:「錯誤BRO」

我嘗試在方法error_404()改變線成爲下面的代碼,

class Error extends Controller{ 

function error_404() 
{ 

    $CI =& get_instance(); 
    $CI->output->set_status_header('404'); 
    $data['title'] = "404 Page Not Found"; 
    $data['body'] = $CI->load->view('web/404','',true); 
    $CI->load->view('web/web_page',$data); 
} 
} 

但是,當我打開鏈路本地主機/馬丁/管理/ blablabla,那裏控制器管理員不是函數blablabla。 輸出:空白頁。 函數error_404不加載視圖。爲什麼404頁面無法加載,當我打開控制器管理員/ blablabla?

謝謝

+0

這可能是一個愚蠢的問題,但您確定您的視圖名爲'404'和'web_page'位於您的視圖目錄嗎? –

+0

是的,我確定。因爲當我打電話$ this-> router-> show_404();在函數中,404頁面被加載... –

回答

0

閱讀該教程的評論,很多人都有與該代碼相同的問題。你是否將第10行的parent :: CI_Router()更改爲parent :: __ construct()?

但爲什麼不只是設置$ route ['404_override']變量?

0

只需設置一個合適的路由在你的config/routes.php文件:

$route['404_override'] = 'your_controller/show_404'; 

以及相應的控制器看起來就像是:

class Your_controller extends CI_Controller { 

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

    function show_404() { 
     $this->output->set_header("HTTP/1.1 404 Not Found"); 
     $this->load->view ('common/errors/404'); //wherever your view is 
    } 
} 

這應該爲你做的伎倆。

相關問題