Cakephp: Wie würde ich alle fehlenden Controller- / Aktionsaufrufe an eine einzige allgemeine Fehlerseite weiterleiten?

8

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?

    
davethegr8 17.11.2009, 01:03
quelle

4 Antworten

25

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 .

    
deceze 17.11.2009, 01:59
quelle
10

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:

%Vor%     
Sandip...The Real hero 08.04.2011 10:44
quelle
0

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 bearbeiten

CakePHP 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:)

    
Michael Mao 17.11.2009 01:58
quelle
0

Fügen Sie im Ordner app / controller eine Klasse PostController.php nicht post_controller.php hinzu. Es bedeutet nur, dass Sie wie sein Klassenname erstellen müssen.

    
Ishan 30.03.2015 18:02
quelle

Tags und Links