2011-07-20 16 views
10
で404エラーのビュー

CodeIgniterのは非常に単純なデフォルトのエラー404メッセージがあります。その代わり、完全に空白のページにこのエラーメッセージを使用しての表示CodeIgniterの

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'); ?> 

は、どのように私の代わりにCodeIgniterのデフォルトのエラーメッセージを使用しての404件のメッセージを表示するには、デフォルトのビューとしてこのmy404_view.phpを使用することができます。

答えて

16

あなたのroutes.phpを変更する必要があります。たとえば、次のアプリケーションで

アプリケーション内の/ configに/ 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ステートメントを使うことができました。唯一の難点は、インクルードステートメントに渡すパスを理解することでした。 /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'; 
?> 

これは、CodeIgniterのコアクラスを変更しようとするよりも私にははるかに簡単に解決策です。

関連する問題