CodeIgniter - получать сообщения об ошибках - PullRequest
1 голос
/ 29 октября 2011

Я создал свою собственную страницу ошибок, изменив строку в config.php

$route['404_override'] = 'main/_404';

Так что теперь он загружает правильную страницу, загружая функцию _404 в мой контроллер

Проблема в том, что я все еще хочу иметь возможность получить переменные $ heading & $ message, отображаемые на странице по умолчанию, которые отображаются как:

<div id="container">
    <h1><?php echo $heading; ?></h1>
    <?php echo $message; ?>
</div>

Вот моя функция _404, если кто-нибудь может дать мне совет, как добавить эти переменные, я был бы очень признателен за это

public function _404() {
        $data['query'] = array('title' => 'Page not found.', 'keywords' => '', 'description' => 'Page not found', 'page' => 'error');


        $this->load->view('parts/head',$data);
        $this->load->view('parts/_404');// <- would go here
        $this->load->view('parts/footer');
    }

1 Ответ

3 голосов
/ 29 октября 2011

Ну, собственно, две вещи:

1) На перенаправленной странице 404 вы должны иметь возможность регулярно передавать любую переменную, которую хотите, поэтому вы можете просто $this->load->view('parts/_404',$data); и иметь там свои переменные.

2) если вы говорите о странице 404 по умолчанию, имейте в виду, что она не может быть переопределена при определенных обстоятельствах, то есть когда вызывается основная функция show_404():

Это не повлияет на функцию show_404 (), которая будет продолжена загрузка файла error_404.php по умолчанию в Приложение / ошибки / error_404.php.

Эта функция относится к классу обработчика исключений. Там, на самом деле, в строке 90 у вас есть

function show_404($page = '', $log_error = TRUE)
    {
        $heading = "404 Page Not Found";
        $message = "The page you requested was not found.";

        // By default we log this, but allow a dev to skip it
        if ($log_error)
        {
            log_message('error', '404 Page Not Found --> '.$page);
        }

        echo $this->show_error($heading, $message, 'error_404', 404);
        exit;
    }

, который в свою очередь вызывает метод show_error(), который устанавливает код ошибки заголовка (4-й аргумент), а добавляет указанное представление (3-й аргумент) в буфер просмотра.

Как видите, сообщения здесь жестко закодированы внутри метода. Если вам нужна полная настройка, вы можете либо переопределить этот метод (например, сделать так, чтобы он вызывал другую функцию в том же классе), либо просто жестко закодировать другое сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...