Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-12-2012 16:11:30

mtcocktail
Membre
Date d'inscription: 20-09-2012
Messages: 71

Changer les 404 pour une redirection 301

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 :

Code:

'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

 

#2 17-12-2012 23:07:48

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Changer les 404 pour une redirection 301

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 :


Code:

[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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages