Ich entwickle gerade ein wiederverwendbares Bundle, wobei ich zusätzliche Routen mache (innerhalb von routing.yml + mit Routing-Loader-Mechanismus geladen). Alle beginnen mit /admin
(ja, das ist ein Admin-Bundle). Ich habe momentan meine eigene 404-Seite in meiner Web-Anwendung (der Haupt). Und ich versuche zu machen, dass, wenn der Benutzer innerhalb des Admin-Bündelfehlers ist, er andere Fehlerseiten sehen wird.Symfony-Fehlerseite nur innerhalb der benutzerdefinierten Route
Ich habe es mit meinen eigenen benutzerdefinierten ExceptionListener
folgend
class ExceptionListener
{
//...
public function onKernelException(GetResponseForExceptionEvent $event)
{
$exception = $event->getException();
$response = new Response();
//...
$response->setContent($this->templating->render($templateName, [
'statusCode' => $response->getStatusCode(),
'page' => $page
]));
$event->setResponse($response);
}
}
und im Bundle services.yml
(innerhalb des benutzerdefinierten Admin-Bundle!):
admin.exception_listener:
class: ....\EventListener\ExceptionListener
calls:
- ["setTemplating", ["@templating"]]
- ["setKernel", ["@kernel"]]
tags:
- { name: kernel.event_listener, event: kernel.exception }
Nun, es funktioniert, ist alles individuelle Bündel Fehlerseiten werden angezeigt. Aber sie werden überall gezeigt, selbst wenn die Hauptanwendungsroute fehlschlägt.
Wie kann ich unterscheiden, wann Anwendungsfehlerseiten angezeigt werden und wann benutzerdefinierte Pakete angezeigt werden sollen?
Sie nur 1 haben kann Ausnahme Handler afaik, aber Sie könnten auf ein Ereignis warten, das von Ihrem Admin-Paket kommt, wie hier beschrieben: http://symfony.com/doc/current/event_dispatcher.html – DarkMukke
@DarkMukke, können Sie mir bitte sagen, wie ich Exception Subscriber nur abonnieren kann zu Ausnahmen, die in einem Paket der Web-App passieren? Ich weiß nicht, wo die andere Antwort unten gegangen war: 0 – user7808407
Ich erstellte den Ausnahme-Abonnenten in meinem benutzerdefinierten Bundle, aber es verhält sich genau als Ausnahme-Listener von meinem Post. Ich kann es nicht schaffen, nur Routenfehler eines Pakets zu abonnieren/anzuhören. :( – user7808407