私は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ビューでも同様のことができると思います。重要なことは、あなたがあなたのビューを行う前にヘッダを吐き出すことです。
更新:
Using Smarty with CodeIgniter
:私は、ここで説明したのと同様のカスタムSmartyのラッパーを使用します