Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-08-2009 13:41:16

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

[1.8]Réécriture d'url avec ZF route

Bonjour,

Je ne sais pas si c'est faisable, alors je viens vous demander conseil. J'ai un controller qui s'appelle "customer" avec l'action "index" à l'intérieur.

Je souhaite avoir une url qui s'adapte avec la langue. Par exemple :

En Anglais :

http://monsite/customer

En Français :

http://monsite/client 

Tout en conservant le même nom de controller. Voyez-vous ce que je souhaite faire ?

J'ai essayé plusieurs choses sans grand succès !

Merci infiniment de votre aide,

cordialement.

Hors ligne

 

#2 19-08-2009 14:46:23

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [1.8]Réécriture d'url avec ZF route

Je trouve cette question extrêment intéressante mais ne l'ai pas encore étudiée.

Réflexion "in real time", j'imaginerait bien un plugin qui en routeShutdown() se chargerait de trouver la correspondance entre le controleur présent dans l'URL et le contrôleur d'action.

Mais comment cette correspondance peut-elle être mise en place ? Au plus basique je dirais que le plugin pourrait posséder en propriété un tableau de correspondance de chaque terme. Cela implique qu'il soit mis à jour toutefois à chaque création d'un nouveau contrôleur.

Et quitte à traduire les contrôleurs, il faudrait en faire de même pour les actions (ce qui pourrait être géré par le même plugin). Et pourquoi pas le reste de l'URL, mais là à mon avis ça se complique, tant pour les paramètres (qu'il faudrait référencer à nouveau) que pour les routes personnalisées qui demanderait un traitement similaire...

L'orientation multilingue laisse penser à un fichier de langue sinon... Si on peut namespacer les fichiers de langues (afin de grouper les traductions sous un Namespace, tel que "ControllerAndAction", "AddonAgenda", ...) ça peut être envisageable probablement, bien que pas très léger sûrement.

Dernière modification par Eureka (19-08-2009 14:51:14)

Hors ligne

 

#3 19-08-2009 16:15:43

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [1.8]Réécriture d'url avec ZF route

Eureka a écrit:

Cela implique qu'il soit mis à jour toutefois à chaque création d'un nouveau contrôleur.

Ou d'utiliser le controller par défault ?! wink

J'ai pensé à la même chose à un moment et cela fonction (en faite j'ai plus que pensé, je l'ai testé smile ). Mais est ce que Zend ne possède pas déjà une class qui fait ce travail avant que je me mette à réinventer la roue ? Par ce que ça m'arrive de temps en temps de commencer quelque chose et de m'apercevoir (par manque de connaissance) qu'une class existe déjà !

Merci pour ton aide.

Dernière modification par nicko (19-08-2009 16:16:27)

Hors ligne

 

#4 19-08-2009 16:33:03

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [1.8]Réécriture d'url avec ZF route

Il n'y a pas de quoi, si toutefois on pouvait réellement appeler cela de l'aide smile

Peux-tu expliciter ce que tu entends par "Ou d'utiliser le controller par défault ?!" s'il te plaît ?

Hors ligne

 

#5 19-08-2009 17:05:26

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [1.8]Réécriture d'url avec ZF route

Dans la version rapide que j'ai codé, je test via fichier ini si j'ai une correspondance qui peut réécrire l'url suivant mon controller. Comment dans l'exemple que j'ai donné en premier.

S'il n'y a pas de correspondance, j'affiche dans l'url le nom du controller qui est par default. Ce qui évite de renommer inutilement un controller par son nom.

J'espère être claire wink.

Voila un code simplifié :

Code:

        $controller = $request->getControllerName ( );

        if ( $request->getControllerName ( ) == 'client' )
        {
            $controller = 'customer';
        }

        $request = $request->setControllerName ( $controller );

Dernière modification par nicko (19-08-2009 17:05:58)

Hors ligne

 

#6 19-08-2009 17:30:51

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [1.8]Réécriture d'url avec ZF route

D'accord.
Il ne faut toutefois pas oublier qu'en plus de savoir les interpréter il faudra également savoir les "écrire" pour les imprimer à l'écran. (possiblement sens inverse de ton fichier de config du coup)

Hors ligne

 

#7 19-08-2009 17:41:42

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [1.8]Réécriture d'url avec ZF route

Je ne pense pas avoir compris mais lorsque je déclare l'url je fais de la façon suivante :

<a href="<?php echo $this->url ( array ( 'controller' => 'client' ), '', TRUE )?>">client</a>

ou

<a href="<?php echo $this->url ( array ( 'controller' => 'customer' ), '', TRUE )?>">customer</a>

Ce qui donne la même vue (suivant le bout de code précédant) avec une url différente et adaptée à la langue éventuellement (puisque c'est le but smile ).

C'est bien ça que tu dis ?

Dernière modification par nicko (19-08-2009 17:43:13)

Hors ligne

 

#8 19-08-2009 17:55:59

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [1.8]Réécriture d'url avec ZF route

Oui c'est bien de cela que je parlais.
Mais ici du coup tu es amené à écrire deux liens différents, non ?
Je pensais plus à un système où tu passes le nom du contrôleur réel et éventuellement une surcharge de l'aide de vue URL se chargerait de traduire elle-même le nom dans la langue désirée.
Bref trouver en soi un moyen de traduire les noms des contrôleurs qui soit à la fois exploitable tant pour l'interprétation que pour l'écriture.

Dernière modification par Eureka (19-08-2009 17:57:08)

Hors ligne

 

#9 19-08-2009 19:02:48

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [1.8]Réécriture d'url avec ZF route

oui, mais si tu mets une fonction de type : $this->tranlate ( 'customer' ) du coup ton lien est traduit suivant la langue !

Je pensais plus à un système où tu passes le nom du contrôleur réel et éventuellement une surcharge de l'aide de vue URL se chargerait de traduire elle-même le nom dans la langue désirée.

Mais le système de traduction dans le plugin serait plus judicieux. Par contre qu'appel une surcharge de l'aide de vue URL ...

Hors ligne

 

#10 21-08-2009 10:21:10

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [1.8]Réécriture d'url avec ZF route

le libellé du lien sera bien traduit via $this->translate(), mais pas le nom du contrôleur du coup, ni l'action, ou autre.

Quand je parle de surcharge je pensais à faire hériter une classe My_View_Helper_Url de Zend_View_Helper_Url qui aurait pour but de redéfinir la méthode url() en incluant de manière automatique la traduction des noms du contrôleur, de l'action, etc...

Zend_View_Helper_Url fait toutefois appel au routeur utilisé (Zend_Controller_Router_Rewrite par défaut). Peut-être est-ce au sein de celui-ci qu'il faudrait gérer la traduction même (au quel cas pas besoin de surcharge de l'helper Url mais plutôt du routeur rewrite). Quelle est la meilleure pratique... telle est la question !

Dernière modification par Eureka (21-08-2009 10:21:57)

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