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

时间:2015-12-27 06:53:09

标签: php codeigniter codeigniter-3

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

我曾经有一个Errors控制器处理网站的404错误页面 - 在这个控制器上我已经定制了一些页面部分,例如如果用户登录,它在导航栏上显示用户名等等(是的,在404错误页面上)

升级到CI 3.0后,我注意到错误页面是在different folder中处理的,我开始以这种方式迁移;但问题是我无法将任何变量加载到此页面,例如会话变量,或者甚至无法在这些页面上使用任何CI功能。

我认为这些页面应该只是HTML页面,但有没有办法将变量加载到这些错误页面?

5 个答案:

答案 0 :(得分:16)

您需要在application/config/routes.php中设置以下路线

$route['404_override'] = 'my404';

然后,您需要在控制器目录(application/controllers/)

中创建一个新控制器
<?php 
class My404 extends CI_Controller 
{
 public function __construct() 
 {
    parent::__construct(); 
 } 

 public function index() 
 { 
    $this->output->set_status_header('404'); 
    $this->load->view('err404');//loading in custom error view
 } 
} 

创建err404视图。多数民众赞成!

参考:Reserved Routes

答案 1 :(得分:1)

运行良好,但如果重定向到错误,例如404使用函数show_404,您的控制器将不会加载您的视图,对于show_404方法中的真实404,您必须转到codeigniter的核心并触摸它

\ SYSTEM \核心\的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);
}

答案 2 :(得分:1)

它在codeigniter 3中无效,我覆盖默认视图(application/views/errors/html/error_404.php)并添加了我的自定义视图,现在show_404()工作正常。

答案 3 :(得分:0)

在Codeigniter 3中,我没有重定向到show_404(),而是重定向到了自定义错误控制器功能。

例如对于上述情况

if (404 condition...) {
    redirect("my404");
}

答案 4 :(得分:0)

要使用 show_404 () 函数,您无需访问 CI 核心并更改它们的对话方式。 只需使用 $CI->load->view(...)

使标准 404 视图加载您的 404 视图

这将保留请求的原始 404 代码,并且不会进行不必要的重定向或核心更改。

$CI =& get_instance();
$CI->load->view('error-404');