codeigniter 3.0 自定义 404 未找到错误页面
codeigniter 3.0 custom 404 not found error page
我的问题是关于升级到 Codeigniter 3.0 后的自定义错误页面。
我曾经有一个 Errors
控制器来处理网站的 404 错误页面 - 在这个控制器上我自定义了页面的某些部分,例如如果用户已登录,它会在导航栏等 (是的,在 404 错误页面上)。
升级到CI 3.0后,我注意到错误页面在different folder中处理,我开始迁移到这种方式;但问题是我无法将任何变量加载到此页面,例如 会话变量 ,甚至无法在这些页面上使用任何 CI 的函数。
我认为这个页面应该只有 HTML 个页面,但是有没有办法将变量加载到这些错误页面?
您需要在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
视图。就这些!
效果很好,但如果重定向到错误,例如 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_404.php
) 并添加了我的自定义视图,现在 show_404()
工作正常。
在 Codeigniter 3 中,我没有调用 show_404()
,而是重定向到自定义错误控制器函数。
例如对于上述情况
if (404 condition...) {
redirect("my404");
}
要使用 show_404 () 函数,您不需要访问 CI 内核并更改它们的通话方式。
只需使用 $CI->load->view(...)
使标准 404 视图加载您的 404 视图
这将保留请求的原始 404 代码,不会进行不必要的重定向或核心更改。
$CI =& get_instance();
$CI->load->view('error-404');
我的问题是关于升级到 Codeigniter 3.0 后的自定义错误页面。
我曾经有一个 Errors
控制器来处理网站的 404 错误页面 - 在这个控制器上我自定义了页面的某些部分,例如如果用户已登录,它会在导航栏等 (是的,在 404 错误页面上)。
升级到CI 3.0后,我注意到错误页面在different folder中处理,我开始迁移到这种方式;但问题是我无法将任何变量加载到此页面,例如 会话变量 ,甚至无法在这些页面上使用任何 CI 的函数。
我认为这个页面应该只有 HTML 个页面,但是有没有办法将变量加载到这些错误页面?
您需要在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
视图。就这些!
效果很好,但如果重定向到错误,例如 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_404.php
) 并添加了我的自定义视图,现在 show_404()
工作正常。
在 Codeigniter 3 中,我没有调用 show_404()
,而是重定向到自定义错误控制器函数。
例如对于上述情况
if (404 condition...) {
redirect("my404");
}
要使用 show_404 () 函数,您不需要访问 CI 内核并更改它们的通话方式。
只需使用 $CI->load->view(...)
这将保留请求的原始 404 代码,不会进行不必要的重定向或核心更改。
$CI =& get_instance();
$CI->load->view('error-404');