web-dev-qa-db-ja.com

codeigniter3.0カスタム404が見つかりませんエラーページ

私の問題は、Codeigniter3.0にアップグレードした後のカスタムエラーページに関するものです。

以前は、ウェブサイトの404エラーページを処理するErrorsコントローラーを使用していました。このコントローラーでは、ユーザーがログインしている場合、ナビゲーションバーにユーザー名が表示されている場合など、ページの一部をカスタマイズしました。 。(はい、404エラーページ)

CI 3.0にアップグレードした後、エラーページが 別のフォルダー で処理されることに気付きました。この方法で移行を開始しました。しかし、問題は、セッション変数などの変数をこのページにロードできないか、これらのページでCIの関数を使用することさえできないことです。

このページはHTMLページのみであると想定されていますが、これらのエラーページに変数をロードする方法はありますか?

6
jafarovr

次のルートをapplication/config/routes.phpに設定する必要があります

$route['404_override'] = 'my404';

次に、コントローラーディレクトリ(application/controllers/)に新しいコントローラーを作成する必要があります。

<?php 
class My404 extends CI_Controller 
{
 public function __construct() 
 {
    parent::__construct(); 
 } 

 public function index() 
 { 
    $this->output->set_status_header('404'); 
    $this->load->view('err404');//loading in custom error view
 } 
} 

そして、err404ビューを作成します。それで全部です!

参照: 予約済みルート

17

Codeigniter 3では機能しません。デフォルトのビュー(_application/views/errors/html/error_404.php_)を上書きしてカスタムビューを追加しましたが、show_404()は正常に機能しています。

2
midhun prakash

これは正常に機能していますが、エラー(たとえば、関数show_404を含む404)にリダイレクトすると、コントローラーはビューをロードしません。show_404メソッドの実際の404の場合、codeigniterのコアに移動してタッチする必要があります。

\ system\core\Common.php

これはコードの例です:

function show_404(){
  $ci = get_instance();
  $ci->output->set_status_header(404);
  $ci->load->view('errors/error404_view');
  echo $ci->output->get_output();
  exit(4);
}
1
Javier Gordo