2011-07-20 28 views
5

アプリケーション/コアフォルダにMY_Controller.phpを追加してCodeIgniterコントローラを拡張しました。正常に動作しますが、error_404.phpページの次のコードをApplication/errorsに追加するとエラーになります。CodeIgniter:クラス 'CI_Controller'が見つかりません

コード原因となった問題:

<?php $ci =& get_instance();?> 
<?php $this->ci->load->view('header')?> 

エラー:

Fatal error: Class 'CI_Controller' not found in path\to\system\core\CodeIgniter.php on line 231 

system\core\CodeIgniter.phpのライン231は、次のとおりです。

function &get_instance() 
    { 
     return CI_Controller::get_instance(); 
    } 

私はそのように、この問題を解決するにはどうすればよいです私は競争することができますシステムファイルで何も変更せずにerror_404.phpにwを入力してください。

PS。私は最新バージョンを使用しています。

ありがとうございました。

答えて

4

CI_Controllerがまだロードされていないと思います。 Exceptionクラスは、includeを使用して404ページの出力を処理しています。

昔、私はテンプレートをまとめたり、file_get_contents()や404ページのURLにcURLリクエストを行うのに、まっすぐincludeを使っていましたが、ついに彼らは何かをしました。 2.0ではあなたがroutes.phpでカスタム404ページを定義することができます。

$route['404_override'] = 'controller/method/parameter'; 

をそれはまだnot a perfect solutionだが、最も簡単な方法は、今だけのルートを使用することです。

base_url()."controller/method/parameter"は有効なURLである必要があります。また、ページを出力するコントローラーにも404ヘッダーを設定する必要があります(何らかの理由で自動的に行われません)。

+0

自動ロードのためにComposerを使用している場合、このエラーは製造元のディレクトリがないために発生する可能性があります。この場合、サーバー上で 'composer install'を実行することで修正するか(推奨)、FTP経由でアップロードするとサーバー上でコマンドを実行できません。 –

0

試してください:あなたは自分のファイル全体で$ CI->ロード - >ビュー( 'ヘッダ)を使用することができ、CIあなたは$にCIのインスタンスを割り当てられたら

<?php $ci =& get_instance();?> 
<?php $ci->load->view('header')?> 

+0

私はそれもやってみました。エラーは最初の行によって発生します。これは、2行目を削除しても同じです。 – Roman

4

は、ここではCodeIgniterのチュートリアルを、以下のときに私はこの問題を持っていた:http://codeigniter.com/user_guide/tutorial/static_pages.html

問題を私がURLにアクセスしようとしました:

はlocalhost/CodeIgniter_2.1.1 /アプリケーション/コントローラ/ pages.php

URLをアドレス指定する代わりに

の代わりに:

localhost/CodeIgniter_2.1.1/index。PHP /ページ/ビュー

私はあなたがその質問をしたが、多分それは他の誰か:)

4

を助けることができるか、あなたはこれを試すことができ、 おそらく少し汚れが、私はそれはなると思うので、それは約18ヶ月となっている知っています以下のために働く私

更新あなたの例外へ

function show_404($page = '', $log_error = TRUE) { 
    if ($log_error) { 
    log_message('error', '404 Page Not Found --> '.$page); 
    } 
    header('Location: http://www.########.###/error/error_404'); 
    die(); 
} 

そしてちょうどおそらく異なるエラーであなたが同じコントローラを使用することができ、リダイレクトを処理するためのコントローラを作成

あなたはダイナミックヘッダーとフッターを手に入れます

関連する問題