Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php codeigniter 3.0自定义404未找到错误页面_Php_Codeigniter_Codeigniter 3 - Fatal编程技术网

Php codeigniter 3.0自定义404未找到错误页面

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

我的问题是关于升级到Codeigniter 3.0后的自定义错误页面

我曾经有一个
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');