2016-09-10 3 views
1

私はカスタム404コントローラを持っています。それはうまく動作します。 routes.phpの中で私が持っている:codeigniterカスタムを強制する404

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

これは、このコントローラにアクセスします。

class custom404 extends MasterController { 
public function __construct(){ 
    parent::__construct(); 
    } 

    public function index(){ 

     $this->output->set_status_header('404'); 

     $crit = array(
      'subtype' => 'footer', 
      'status' => 'public' 
     ); 
     $res = $this->mongo_db->where($crit)->get('contentobjects'); 



     $this->pagedata = $res[0]; 

     $this->load->view('404'); 

    } 
} 

は、私は別のコントローラからこれを呼び出すことができますか? は現在、私はちょうど(表向き) - 現存決してページを呼び出すことによって、問題を強制しています:

if(!$this->viewable($res[0])){ 
     header('Location: /404'); 
     die; 
    } 

答えて

0

はいあなたは、単にそれに直接リダイレクトすることができます。

しかし、CIにはエラーフォルダがあり、HTML用のサブフォルダと404エラービューページがあります。このページをカスタマイズすると、ヘッダーはすべて自動的に正しく設定され、より明瞭に呼び出すことができます。

if (empty($result)) 
{ 
    // show error 
    show_error('The result you requested could not be found', '404'); 
} 

以上簡潔:

if (empty($result)) show_error('The result you requested could not be found', '404'); 

ここでのメッセージは、$メッセージフィールドにテンプレートにアクセスすることができます。

あなたは、簡単に401など

http://www.codeigniter.com/user_guide/general/errors.html

+0

のようにこれは私のカスタム404ビューなしで、404をスローし、あなたが必要とする任意のコードを設定することができます。 – axlotl

+0

デフォルトのエラービューフォルダにあるエラーテンプレートをカスタマイズできます。 – PaulD

関連する問題