尝试在控制器中调用非功能时,自定义404不起作用

时间:2012-06-09 14:44:09

标签: codeigniter

我尝试使用本教程http://maestric.com/doc/php/codeigniter_404

中的自定义404页面

我的控制器error.php:

class Error extends Controller{


     function error_404()
     {
      $CI =& get_instance();
      $CI->output->set_status_header('404');
      echo "error bro";

     }
    } 

当我打开链接localhost / mading / admin / blablabla时,在controoler admin中没有函数blablabla()。 输出:“错误兄弟”

我尝试在方法error_404()中更改行成为下面的代码,

class Error extends Controller{

 function error_404()
 {

  $CI =& get_instance();
  $CI->output->set_status_header('404');
  $data['title'] = "404 Page Not Found";
  $data['body'] = $CI->load->view('web/404','',true);
  $CI->load->view('web/web_page',$data);
 }
} 

但是,当我打开链接localhost / mading / admin / blablabla时,控制器管理员中没有函数blablabla。 输出:空白页。  函数error_404不加载视图。当我打开控制器管理员/ blablabla时,为什么404页面没有加载?

感谢

2 个答案:

答案 0 :(得分:0)

阅读该教程的评论,许多人在使用该代码时遇到同样的问题。您是否将第10行的parent :: CI_Router()更改为parent :: __ construct()?

但为什么不设置$ route ['404_override']变量?

答案 1 :(得分:0)

只需在config / routes.php中设置正确的路线:

$route['404_override'] = 'your_controller/show_404';

相应的控制器看起来像那样:

class Your_controller extends CI_Controller {

    function __construct() {
        parent::__construct();
    }

    function show_404() {
        $this->output->set_header("HTTP/1.1 404 Not Found");
        $this->load->view ('common/errors/404'); //wherever your view is
    }
}

这应该适合你。