Wie hier detailliert: Need assistance with Kohana 3 and catch all route turning into a 404 error als die akzeptierte Antwort auf die Frage, ich versuche, Fehler von Kohana geworfen, um hübsche Fehlerseiten anzuzeigen und korrekte HTTP-Codes zu senden.Abfangen Kohana_Request_Exception in Kohana v3 während der Ausführung - unerwartetes Verhalten
Hier ist eine vereinfachte Version des Problems zu demonstrieren:
try {
// Instantiate your Request object
$request = Request::instance();
// The give it a try, to see if its a valid request
$request->execute();
}
catch (Kohana_Request_Exception $e) {
header('Content-Type: text/html; charset='.Kohana::$charset, TRUE, 404);
echo Request::factory('err/404')->send_headers()->execute()->response;
exit;
}
echo $request->send_headers()->response;
Also habe ich zu einem nicht vorhandenen URL navigieren wie http://example.local/moo/ und ich bekomme die folgende Antwort
Kohana_Request_Exception [ 0 ]: Unable to find a route to match the URI: moo
Hier ist, was happening- ist - Die Anfrage wird versucht, mit einer Kohana_Request_Exception fehlgeschlagen, wird abgefangen ABER, wenn ich versuche, ein neues Anfrageobjekt zu erstellen, THAT Anforderung wirft den Fehler f Von meiner ersten Bitte ....!? wtf ??
Ich habe eine gute Stunde damit herumgespielt und bin so verwirrt wie zu Beginn. Sollte die neue Anfrage von der Fabrik keine Kenntnis von der alten Anfrage haben ?? Warum funktioniert dieser Code nicht, wenn ich ihn im Wesentlichen von der Antwort des d00d kopiert habe?
// Release version and codename
const VERSION = '3.0.7';
const CODENAME = 'hattrick';
Jemand zeigen mir in die richtige Richtung .. thx Jungs.
Rufen Sie 'header()' nicht direkt auf. Es wird nur von 'Request :: send_headers().' Sowieso überschrieben. Verwenden Sie stattdessen 'Request-> headers []' und 'Request-> status'. – shadowhand