My problem is about custom error pages after upgrading to Codeigniter 3.0.
I used to have a Errors
controller which handled 404 error page of the websi
In Codeigniter 3, instead of calling show_404()
, I just redirected to the custom error controller function.
e.g. for the above scenario
if (404 condition...) {
redirect("my404");
}
It's not working in codeigniter 3, I overwrite the default view (application/views/errors/html/error_404.php
) and added my custom view, now show_404()
is working fine.
that is working good, but if redirect to an error, for example 404 with function show_404, your controller wont load your view, for a real 404 in the show_404 method, you have to go to the core of codeigniter and touch it.
\system\core\Common.php
this is an example of code:
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);
}
You need to set in application/config/routes.php
the following route
$route['404_override'] = 'my404';
Then you need to create a new controller in your controllers directory (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
}
}
And create an err404
view. Thats all!
Refer :Reserved Routes