我将 CodeIgniter 与 Smarty 一起使用。我的 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