2 Stimmen

CodeIgniter - Fehlermeldungen erhalten

Ich habe meine eigene benutzerdefinierte Fehlerseite erstellt, indem ich die Zeile in config.php geändert habe

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

Jetzt wird also die richtige Seite geladen, indem die Funktion _404 in meinem Controller geladen wird

Das Problem ist, ich möchte immer noch in der Lage sein, einen Zugriff auf die $heading & $message-Fehlervariablen in der Standardseite angezeigt, die als anzeigen:

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

Hier ist meine _404 Funktion, wenn jemand mir einen Rat geben kann, wie man diese Variablen hinzufügen würde ich sehr zu schätzen wissen

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');
    }

4voto

Damien Pirsy Punkte 25003

Nun, eigentlich sind es zwei Dinge:

1) In Ihrer umgeleiteten 404-Seite sollten Sie in der Lage sein, regelmäßig jede beliebige Variable zu übergeben, also können Sie einfach $this->load->view('parts/_404',$data); und haben dort Ihre Variablen zur Verfügung.

2) Wenn Sie über die Standard-404-Seite sprechen, denken Sie daran, dass sie unter bestimmten Umständen nicht überschrieben werden kann, nämlich wenn die show_404() Kernfunktion aufgerufen wird:

Dies hat keine Auswirkungen auf die Funktion show_404(), die weiterhin die Standarddatei error_404.php unter application/errors/error_404.php.

Diese Funktion gehört zur Klasse Exception handler. Dort haben Sie nämlich in Zeile 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;
    }

die wiederum die show_error() Methode, die die Header-Fehlercode (4. Argument) und fügt hinzu. den angegebenen siehe (3. Argument) in den Ansichtspuffer.

Wie Sie sehen können, sind die Nachrichten hier innerhalb der Methode fest kodiert. Wenn Sie eine vollständige Anpassung wünschen, können Sie entweder die este (z. B. eine andere Funktion innerhalb derselben Klasse aufrufen) oder stattdessen einfach eine andere Nachricht hart codieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X