SmartyでCodeIgniterを使用しています。Smartyクラスにnotfound()という追加の関数があります。notfound()を呼び出すと、正しいヘッダー位置が404ページに設定され、404テンプレートが表示されます。テンプレートにはオーバーライド可能なタイトルとメッセージがあるため、非常に用途が広いです。サンプルコードは次のとおりです。
Smarty.class.php
function not_found() {
header('HTTP/1.1 404 Not Found');
if (!$this->get_template_vars('page_title')) {
$this->assign('page_title', 'Page not found');
}
$this->display('not-found.tpl');
exit;
}
コントローラーでは、次のようなことができます。
$this->load->model('article_model');
$article = $this->article_model->get_latest();
if ($article) {
$this->smarty->assign('article', $article);
$this->smarty->view('article');
} else {
$this->smarty->assign('title', Article not found');
$this->smarty->not_found();
}
同様に、/ system / application / error/error_404.phpのコードを次のように変更できます。
$CI =& get_instance();
$CI->cismarty->not_found();
これはうまく機能し、少量のコードを使用し、さまざまなタイプの欠落しているエンティティに対して404機能を複製しません。
組み込みのCodeIgniterビューでも同様のことができると思います。重要なことは、ビューを実行する前にヘッダーを吐き出すことです。
更新:ここで説明するものと同様のカスタムSmartyラッパーを使用します。
SmartyをCodeIgniterで使用する