Php codeigniter 3.0自定义404未找到错误页面
我的问题是关于升级到Codeigniter 3.0后的自定义错误页面 我曾经有一个Php codeigniter 3.0自定义404未找到错误页面,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我的问题是关于升级到Codeigniter 3.0后的自定义错误页面 我曾经有一个Errors控制器,它处理网站的404错误页面-在这个控制器上,我定制了页面的一些部分,例如,如果用户登录,它在导航栏上显示用户名等等(是的,在404错误页面上) 升级到CI 3.0后,我注意到错误页面是在中处理的,我开始以这种方式迁移;但问题是我不能将任何变量加载到此页面,例如会话变量,或者甚至不能在这些页面上使用任何CI函数 我认为这些页面应该只是HTML页面,但是有没有办法将变量加载到这些错误页面?您需要在a
Errors
控制器,它处理网站的404错误页面-在这个控制器上,我定制了页面的一些部分,例如,如果用户登录,它在导航栏上显示用户名等等(是的,在404错误页面上)
升级到CI 3.0后,我注意到错误页面是在中处理的,我开始以这种方式迁移;但问题是我不能将任何变量加载到此页面,例如会话变量,或者甚至不能在这些页面上使用任何CI函数
我认为这些页面应该只是HTML页面,但是有没有办法将变量加载到这些错误页面?您需要在
application/config/routes.php
中设置以下路径
$route['404_override'] = 'my404';
然后,您需要在控制器目录中创建一个新控制器(应用程序/controllers/)
工作正常,但如果重定向到错误,例如404带有函数show_404,控制器将不会加载视图,对于show_404方法中的真实404,您必须转到codeigniter的核心并触摸它
\system\core\Common.php
这是一个代码示例:
function show_404(){
$ci = get_instance();
$ci->output->set_status_header(404);
$ci->load->view('errors/error404_view');
echo $ci->output->get_output();
exit(4);
}
它在codeigniter 3中不起作用,我覆盖了默认视图(application/views/errors/html/error\u 404.php
)并添加了我的自定义视图,现在show\u 404()
工作正常 在Codeigniter 3中,我没有调用show_404()
,而是重定向到自定义错误控制器函数
e、 g.对于上述情况
if (404 condition...) {
redirect("my404");
}
要使用show_404()函数,您不需要访问CI核心并更改它们的对话方式。
只需使用$CI->load->view(…)
这将保留请求的原始404代码,不会进行不必要的重定向或核心更改
$CI =& get_instance();
$CI->load->view('error-404');
常规检查确保您的控制器类和文件名的首字母大写。@wolfgang1983我已经删除了控制器类,我正在尝试使用新的方式-CI 3.0方式。不清楚您要使用什么asking@Abdulla看看这个。这是CI 3.0目录结构,因为您可以看到错误页面的处理方式与以前的版本不同。如何将变量加载到这些页面?例如会话变量,或smth else?同时显示代码CodeIgniter 3类和文件名的第一个字母应为大写。如果使用show_404()
函数,则此功能无效。
$CI =& get_instance();
$CI->load->view('error-404');