Jump to content

hookModuleRoutes() et plusieurs langues


Recommended Posts

Bonjour,

 

J'essaie tant bien que mal d'ajouter ma propre route à un module.

Le code ci-dessous fonctionne parfaitement s'il n'y a qu'une seule langue activée :

public function hookModuleRoutes()
    {
        $route = array(
            'module-reservation-calendar' => array(
                'controller' => 'calendar',
                'rule' => 'reservation{/:year}{/:week}',
                'keywords' => array(
                    'year' => array('regexp' => '[0-9]{4}', 'param' => 'year'),
                    'week' => array('regexp' => '[0-9]{1,2}', 'param' => 'week'),
                ),
                'params' => array(
                    'fc' => 'module',
                    'module' => 'reservation',
                    'controller' => 'calendar',
                )
            )
        );
        if (Tools::getValue('controller') != 'AdminModules') {
            return $route;
        }
    }

Cette route permet d'accéder au module par ces URL :

/reservation
/reservation/2016/26

Si j'active une autre langue, les URL ne fonctionnent plus. En effet, l'accès au module deviendrait :

/fr/reservation
/fr/reservation/2016/26

/en/reservation
/en/reservation/2016/26

J'obtiens ce message d'erreur :

Dispatcher::createUrl() miss required parameter "year" for route "module-reservation-calendar"

 

 

Où est-ce que je m'y prends mal ?

Link to comment
Share on other sites

Merci pour ta réponsé ndiaga, mais

$this->context->link->getModuleLink('reservation', 'calendar')

renvoit : /module/reservation/calendar

 

Et les paramètres sont passés tel que ?year=2016&week=26.

 

Ça ne résout pas mon problème, la route /reservation n'est toujours pas utilisable.

Link to comment
Share on other sites

Dans le controller, j'appelle bien avec les paramètres passés en argument, le soucis n'est pas là.

 

Pour résumé, en monolingue, c'est OK, j'ai bien mes URL qui ressemblent à ce que je souhaite :

/reservation
/reservation/2016/26

En multilingue, cette URL fonctionne :

/fr/reservation/2016/26

Et celle-ci ne fonctionne pas :

/fr/reservation
Edited by Tiger-222 (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...