Cas*_*r O 18 php codeigniter http-status-code-404 codeigniter-2
我一直在与CodeIgniter合作已经有一段时间了,我现在正在为一个想要自定义404页面的客户做一个项目.一切都很好,404_override而且效果很好.
我的问题出现在访问者试图访问不存在的文章时我想调用该show_404()函数,但这显示了"out of box"404页面,而不是404_override中写的那个.
我已经看到了旧版本的一些修复,但我无法在2.1中使用它.所以如果有人可以帮助我,我将非常感激.
lan*_*ons 23
重定向是最干净的; 加载视图也可以工作.
这里的问题是show_404()通常在您的控制器已经加载之后被调用(事情必须告诉它显示404).CI不喜欢在那时加载第二个控制器,这是主要障碍.
您最好的选择可能是扩展Exceptions类中的show_404()函数以重定向到404路由.如果没有重定向,您将会在调用404之前显示一个您知道具有所需"额外数据"的视图或其他内容(或者我猜您也可以在Exceptions类中加载它).在某些动态视图中,它可能变得非常复杂.
你显然想要比在错误文件夹中编辑404模板更先进的东西.我在尝试从该文件访问get_instance()时遇到问题,因为有时它会在构造控制器之前加载.所以,如果你尝试那就要小心;)
更新:这是扩展show_404()函数以加载视图的工作示例
<?php
// application/core/MY_Exceptions.php
class MY_Exceptions extends CI_Exceptions {
public function show_404()
{
$CI =& get_instance();
$CI->load->view('my_notfound_view');
echo $CI->output->get_output();
exit;
}
}
Run Code Online (Sandbox Code Playgroud)