CodeIgniter 3:show_404()仅显示模板文件而不显示控制器

use*_*526 1 codeigniter-3

我有一个控制器,我需要检查URL中的有效ID,show_404()如果ID不匹配.

我面临的问题是,当我调用show_404()它时只显示view/error/404.html而不是my404我配置的自定义控制器routes.php

差异是my404控制器添加页眉和页脚相同view/error/404.html

JC *_*Lee 6

要在调用show_404()时拥有自定义404页面,您需要扩展核心.

当您只是将其添加到路线时,它不会影响show_404().

在application/core文件夹中:

class MY_Exceptions extends CI_Exceptions {

    /**
     * 404 Error Handler
     *
     * @uses    CI_Exceptions::show_error()
     *
     * @param   string  $page       Page URI
     * @param   bool    $log_error  Whether to log the error
     * @return  void
     */
    public function show_404($page = '', $log_error = TRUE)
    {
        if (is_cli())
        {
            // For CLI
            $heading = 'Not Found';
            $message = 'The controller/method pair you requested was not found.';
            echo $this->show_error($heading, $message, 'error_404', 404);
        }
        else
        {
            // For view
            $CI = &get_instance();
            $CI->layout->show('front/error/404', $CI->view_data); //Note I am using layout library. You'll probably use $CI->load->view()
            echo $CI->output->get_output();
        }

        // By default we log this, but allow a dev to skip it
        if ($log_error)
        {
            log_message('error', $heading.': '.$page);
        }

        exit(4); // EXIT_UNKNOWN_FILE
    }

}
Run Code Online (Sandbox Code Playgroud)