Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-12-2011 17:43:47

iole
Nouveau membre
Date d'inscription: 02-12-2011
Messages: 2

Urls "friendly"

Bonjour,

J'ai fait un petit plugin afin d'avoir des url de type :controller/:keyword pour l'un de mes sites.

Cela sert par exemple à utiliser des url de type :
http://mondomaine.com/pages/ma-page

où "pages" est un controller et ma-page le titre de ma page.

Voici la classe, j'aimerai beaucoup avoir l'avis de la communauté là-dessus :

Code:

class Package_Controller_Plugin_FriendlyUrl extends Zend_Controller_Plugin_Abstract{


    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {    
        $dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
        
        $controllerClassName = $dispatcher->getControllerClass($request);
        
        $controller = $dispatcher->loadClass($finalClass);
        
        $actionMethodName = $request->getActionName()."Action";
                
        $methodExist = method_exists( $controller, $actionMethodName );
        
        if(!$methodExist)$request->setActionName("index");

    }
}

Hors ligne

 

#2 02-12-2011 22:55:22

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

Re: Urls "friendly"

Qu'est-ce que tu cherches à faire ? Tu n'as absolument pas besoin de tout ça, là tu es en train de réécrire du code qui est fait automatiquement.

Tu as compris un peu le concept des contrôleurs ? Il te suffit tout simplement de créer des actions dans le contrôleur (ainsi, si tu veux la page mondomaine.com/pages/ma-page, il te faut un contrôleur "Pages" et une action - une fonction donc - appelée maPageAction).

Relis le quickstart sur le site de Zend Framework smile.

Hors ligne

 

#3 05-12-2011 11:49:09

iole
Nouveau membre
Date d'inscription: 02-12-2011
Messages: 2

Re: Urls "friendly"

Oki merci pour ta réponse,

Je vais essayer d'être plus claire, ici "ma-page" est une valeur dynamique. Prenons plutôt "mon-article" ça sera peut-être plus évident.

Je souhaite que les url du type :controller/:articleName soient traitées au niveau de l'action "index" du controller, mais je souhaite également que les autres actions du controller soient accessibles normalement (:controller/:action )

C'est le même principe que les vanity url mais avec un niveau supplémentaire.

J'avais également songé à implémenter la méthode "__call" ...

Merci.

Hors ligne

 

#4 05-12-2011 20:03:09

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

Re: Urls "friendly"

Il faut que tu regardes au niveau des routeur pour rediriger ces requêtes vers l'action qui t'intéresse.

Il faut juste faire attention qu'il n'ait pas de conflit entre la valeur dynamique et d'éventuelles actions dans le contrôleur. Par exemple : si tu souhaites que toutes les requêtes :controller/:articleName soient redirigées vers l'action "test" du controller "toto", et que dans le même temps tu as une action "foo" dans ton contrôleur "toto", il faut faire attention que :articleName ne prenne pas la valeur "foo", autrement il risque d'y avoir un conflit.

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