2011-07-20 17 views
10
爲404錯誤視圖

的CI有一個非常簡單的默認錯誤404消息:顯示CI中

404 Page Not Found 
The page you requested was not found. 

而不是完全空白頁上使用此錯誤消息,我想在我的頭之間來包裝這個消息和頁腳視圖,以便錯誤消息具有與其他頁面類似的外觀。

爲此,我創建了一個錯誤視圖?例如:

my404_view.php

<? $this->load->view('header'); ?> 
404 Page Not Found 
The page you requested was not found. 
<? $this->load->view('footer'); ?> 

現在,如何使用這個my404_view.php作爲默認視圖中顯示,而不是使用笨默認的錯誤消息404級的消息。

回答

16

你應該改變你的routes.php文件。例如:

在應用

/配置/ routes.php文件

$route['404_override'] = 'welcome/_404'; 
在應用

/控制器/的welcome.php

function _404(){ 
    $this->load->view("my404_view"); 
} 

而這應當是在CI的當前版本足夠。

+8

這隻適用於找不到請求的路由。當你調用'show_404()' –

+0

是的時,它不起作用,那就是...... –

4

在默認錯誤404頁面中包含頁眉和頁腳似乎是CodeIgniter用戶的常見問題。我想添加這個鏈接:Simon Emms在http://www.simonemms.com/2011/05/06/codeigniters-404-override-problem/的評論,因爲他很清楚地描述了這個問題。 我已經嘗試了http://maestric.com/doc/php/codeigniter_404的建議,並與Simon Emms的想法和其他人一起玩過,但無法實現它們。我在PHP和CodeIgniter上有點新手,可能是因爲無知。也就是說,很難確保您將建議的子類放在正確的位置並正確配置(例如)routes.php。在嘗試了各種相當複雜的想法3天后,我發現我可以在默認錯誤404頁面中使用include語句。唯一的困難是弄清楚傳遞給include語句的路徑。 在/system/core/Exceptions.php第146行中,我發現CodeIgniter開發者使用APPPATH。然後,您只需將路徑附加到要包含的頁眉和頁腳頁面。 我的新的默認錯誤404頁,現在看起來是這樣的:

<?php 
include APPPATH.'/views/templates/header.php'; 
?> 
<div id="container"> 
    <h1><?php echo $heading; ?></h1> 
    <?php echo $message; ?> 
</div> 
<?php 
include APPPATH.'/views/templates/footer.php'; 
?> 

這似乎是一個更容易的解決方案,我不是試圖改變CI中的核心類。