Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Quelqu'un saurait comment je peux faire pour attraper l'exeption 404 de mon application zf2 pour les rediriger vers une page en 301, au lieu d'avoir la page 404 de ZF ?
Pour l'instant j'ai la déclaration classique :
'view_manager' => array( 'display_not_found_reason' => true, 'display_exceptions' => true, 'doctype' => 'HTML5', 'not_found_template' => 'error/404', 'exception_template' => 'error/index', 'template_map' => array( 'layout/layout' => __DIR__ . '/../view/layout/layout.phtml', 'application/index/index' => __DIR__ . '/../view/application/index/index.phtml', 'error/404' => __DIR__ . '/../view/error/404.phtml', 'error/index' => __DIR__ . '/../view/error/index.phtml', ), 'template_path_stack' => array( __DIR__ . '/../view', ), ),
Hors ligne
Jamais fait, mais je pense qu'il faut que tu ajoutes un listener à l'évènement "dispatch.error" avec une priorité élevée pour éviter que le listener par défaut soit exécuté en premier, et que tu retournes un objet implémentant ResponseInterface pour ne pas executer les listeners suivants (comme tu peux le voir ici c'est la condition d'arrêt : https://github.com/zendframework/zf2/bl … n.php#L267). Je n'ai pas testé, mais quelque chose comme ça devrait le faire :
Dans la fonction onBootstrap du Module.php :
[lang=php]public function onBootstrap(MvcEvent $e) { $em = $e->getApplication()->getEventManager(); $em->attach(MvcEvent::EVENT_DISPATCH_ERROR, function(MvcEvent $event) { $response = $event->getResponse(); $response->setResponseCode(301); return $response; }, 1000); }
Hors ligne
Pages: 1