Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
je viens vers vous pour essayer de comprendre plus en détails le fonctionnement du router de ZF2.
J'essaie de créer des routes "génériques" dans le sens où j'aimerais bien pouvoir définir une route qui puisse servir pour l'ensemble de mon application.
Jusqu'à maintenant, j'utilisais des routes de type Literal ou Segment mais le problème vient du fait que je dois passer de nombreux paramètres sur certaines routes.
J'ai donc essayé de comprendre comment fonctionne la route de type Wildcard sans succès. D'après ce que j'ai vu, elle pourrait correspondre à mes besoins mais j'ai du mal à l'implémenter...
Ce que j'aimerais comme route, c'est quelque chose qui ressemble à ceci :
www.mon-site.com/controller/action[/id][/params1Key][/params1Value][params2Key][params2Value]...
Voici pour l'instant, un exemple de code que j'ai fais jusqu'à maintenant mais je n'en suis pas très satisfait...
[lang=php] // module Application - Provient du Skeleton de Zend 'router' => [ 'routes' => [ 'home' => [ 'type' => 'Zend\Mvc\Router\Http\Literal', 'options' => [ 'route' => '/', 'defaults' => [ 'controller' => 'Application\Controller\Index', 'action' => 'index' ] ] ], // The following is a route to simplify getting started creating // new controllers and actions without needing to create a new // module. Simply drop new controllers in, and you can access them // using the path /application/:controller/:action 'application' => [ 'type' => 'Literal', 'options' => [ 'route' => '/[:controller][/:action]', 'defaults' => [ '__NAMESPACE__' => 'Application\Controller', 'controller' => 'Index', 'action' => 'index' ] ], 'may_terminate' => true, 'child_routes' => [ 'default' => [ 'type' => 'Segment', 'options' => [ 'route' => '/[:controller[/:action]]', 'constraints' => [ 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 'action' => '[a-zA-Z][a-zA-Z0-9_-]*' ], 'defaults' => [ ] ] ] ] ] ] ],
[lang=php] // Un de mes modules 'routes' => [ 'provider' => [ 'type' => 'segment', 'options' => [ 'route' => '/provider[/:action][/:id][/:params1][/:params2]', 'constraints' => [ 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 'params1' => '[a-zA-Z][a-zA-Z0-9_-]*', 'params2' => '[a-zA-Z][a-zA-Z0-9_-]*', 'id' => '\d+', ], 'defaults' => [ 'controller' => 'Provider\Controller\Provider', 'action' => 'list' ] ], 'add' => [ 'type' => 'segment', 'options' => [ 'route' => '/add[/:params1][/:id]', 'defaults' => [ 'action' => 'add' ], 'constraints' => [ 'params1' => '[a-zA-Z][a-zA-Z0-9_-]*', 'id' => '\d+' ] ] ], ],
Je sais qu'il était possible de réaliser ce genre de route sous ZF1 et c'est ce que je souhaiterais reproduire...
Malheureusement, pour l'instant, je m'y casse les dents !
Une idée ?
Merci d'avance,
Romain
Hors ligne
Salut, en terme de perf faire ça c'est pas bon du tout. Il est préférable d'avoir plein de petites routes de type literal et quand c'est nécessaire des routes de type segment. Et lorsque tu as beaucoup de paramètres tu les passes en query params.
Si je reprend ton exemple ça donnerait :
www.mon-site.com/controller/action[/id]?params1Key=params1Value¶ms2Key=params2Value¶ms3Key=params3Value
Hors ligne
OK, je vois le truc !
Et en admettant que je souhaite quand même faire une route "générique", comment faudrait-il que je procède ?
Hors ligne
Aucune idée . Vu que c'est pas bon de faire ça du coup je me suis jamais posé la question
.
Hors ligne
D'accord !
Merci pour ta réponse
Hors ligne