Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut,
A force de me documenter j'ai vu qu'il était interressant de définir une route en avec les expressions régulières.
J'ai définit une route :
$route = new Zend_Controller_Router_Route_Regex(
'accueil__(\w+)__(\w+)',
array(
'controller' => 'accueil',
'action' => 'index',
'date' => null,
),
array(
1 => 'pays',
2 => 'date'
),
'accueil__%s__%s'
);
J'aimerais que le second paramètre soit optionel, pour cela j'ai essayé la ligne :
'accueil__(\w+)(?:__(\w+))?',
Mais cela ne marche po
Quelqu'un peux t'il me donner un coup de main sur ce sujet ?
Merci d'avance.
Mais cela ne
Hors ligne
Un simple
accueil__(\w+)(__\w+)?
ne fonctionne-t-il pas ?
Hors ligne
acharrex a écrit:
Un simple
Code:
accueil__(\w+)(__\w+)?ne fonctionne-t-il pas ?
Salut,
J'ai essayé ta solution :
Il apparais que lorsque je fais un getparam il ne sais pas faire l'explode des différents arguments:
Ansi quand je teste : "france_bordeaux__octobre_2008"
Il considere que "pays" est égale à "france_bordeaux__octobre_2008", la où il aurais du comprendre que c'est uniquement "france_bordeaux" et "date" est égale à "octobre_2008".
Hors ligne
Je pense que ta regexp est bonne, tu devrais peut-etre tester si ce param optionel est setté dans ton controlleur d'action
function indexAction() { if(isset($this->_request->getParam("date"))) { .... } else { ... } }
Ou même verifier que c'est une string et qu'il appartient a telle range de date
Ou implementer ta classe de routage a partir de Zend_Controller_Router_Interface (il n'y a que le methode route() a definir)
Dernière modification par meuledor (06-10-2008 17:31:15)
Hors ligne
Salut,
J'ai continué à tester. Il y a un truc que l'on avais omis, c'est que le "/" serais apparu dans la deuxieme string si l'on ajoute pas un délimiteur de variable.
J'ai fini par trouver quelque chose qui marche bien:
'accueil(?:/(\w+))?(?:/(\w+))?'
Soit:
$route = new Zend_Controller_Router_Route_Regex( 'accueil(?:__([a-zA-Z_]+))?(?:__(\w+))?' , array( 'controller' => 'accueil' , 'action' => 'index' , 'pays' => null , 'date' => null ) , array( 1=>'pays' , 2=>'date' ), 'accueil__%s__%s' );
Par contre à cause de la reverse route, quand l'une de mes variables est à NULL, il me génère avec le View Helper Url, une uri du type :
exmple avec date à NULL:
'accueil__france__'
Comme quoi, ca ne seras jamais parfais parfais.
Dernière modification par DarKA (06-10-2008 19:11:11)
Hors ligne
Mais je me demandais pourquoi tu n'utilisais pas cette syntaxe :
$router = new Zend_Controller_Router_Rewrite(); $router->addRoute( "default", new Zend_Controller_Router_Route( "/:controller/:action/:pays/:date*", array( "controller" => "accueil", "action" => "index" "pays" => null, "date" => null ) ) );
Si le paramètre "pays" ou "date" n'existe pas, il prendra la valeur NULL.
Ce n'est pas ce que tu souhaites ?
Hors ligne
Pages: 1