Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-08-2015 10:14:43

RomainG
Membre
Date d'inscription: 10-06-2015
Messages: 65

Routing "générique" pour l'application

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...

Code:

[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' => [ ] 
                        ] 
                    ] 
                  ] 
              ] 
          ] 
],

Code:

[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

 

#2 19-08-2015 10:20:24

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Routing "générique" pour l'application

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&params2Key=params2Value&params3Key=params3Value

Hors ligne

 

#3 19-08-2015 10:30:48

RomainG
Membre
Date d'inscription: 10-06-2015
Messages: 65

Re: Routing "générique" pour l'application

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

 

#4 19-08-2015 12:17:52

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Routing "générique" pour l'application

Aucune idée smile. Vu que c'est pas bon de faire ça du coup je me suis jamais posé la question wink.

Hors ligne

 

#5 19-08-2015 13:05:28

RomainG
Membre
Date d'inscription: 10-06-2015
Messages: 65

Re: Routing "générique" pour l'application

D'accord !

Merci pour ta réponse wink

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