Ich habe eine CakePHP-App, die ich versuche, die Pages::404
-Funktion (und die entsprechende Ansicht) zu bekommen, wenn Cake auf einen Fehler stößt (Controller, Aktion usw. fehlen).
Was ist der beste Weg, das zu tun?
Cake löst automatisch einen 404-Fehler für fehlende Methoden oder Controller aus. Im Debug-Modus hat dieser Fehler die Form einer detaillierten Fehlermeldung mit folgenden Anweisungen:
Fehlender Controller
Fehler: FooController konnte nicht gefunden werden.
Fehler: Erstellen Sie die Klasse FooController unten in der Datei: & gt; app / controllers / foo_controller.php
Hinweis: Wenn Sie diese Fehlermeldung anpassen möchten, erstellen Sie app / views / errors / missing_controller.ctp
Im Produktionsmodus ( debug = 0
) sieht die Nachricht einfach so aus:
Nicht gefunden
Fehler: Die angeforderte Adresse '/ foo' wurde auf diesem Server nicht gefunden.
Diese Fehlerseiten sind in cake/libs/view/errors/
definiert. Wie die Nachricht im Debug-Modus sagt, können Sie eigene eigene Fehlerseiten (mit dem gleichen Namen wie im Verzeichnis cake/
) in app/views/errors/
erstellen.
Wenn Sie eine benutzerdefinierte Funktion für Fehler ausführen möchten, fügen Sie sie am besten in den AppError
Controller ein, wie in Fehlerbehandlung .
Schritt 1: Fügen Sie in app_controller.php zwei Funktionen hinzu
%Vor% Schritt2: In views\layouts\
create error.ctp
enthält echo $ content_for_layout;
Schritt: 3 In views\errors\
Mach missing_action.ctp
und passe die Seite nach deinen Wünschen an
Mein PHP-Code war:
Sind Sie in der Steuerung, wenn Sie versuchen, auf die 404-Fehlerseite umzuleiten?
Wenn das der Fall ist, können Sie das Problem folgendermaßen umgehen:
Kopieren Sie das Fehlerlayout (error404.ctp) aus dem Kuchen und fügen Sie es ein Core-Bibliotheksverzeichnis in Ihre App / views / errors /
Fügen Sie dann die folgende Zeile hinzu, wenn Sie auf einen Fehler in einem Controller stoßen.
%Vor%Oh, eine andere Möglichkeit, dies zu handhaben, ist die Datei routes.php in app / config
zu bearbeitenCakePHP Offizielle Seite Routes-Konfiguration
Ich habe momentan keine funktionierende Kopie von CakePHP, also würde ich hier nur die grundlegende Logik beschreiben (was Sie in der Datei routes.php machen können)
Leiten Sie den Datenverkehr mit bestimmten URL-Mustern (zB Ссылка ) an die entsprechenden Ziele um. Leiten Sie den gesamten anderen Verkehr (fehlender Controller, Modell, Ansicht usw.) auf die 404-Seite um.
Hoffe das hilft:)