Oh men, murphy's law again... 30 seconds after sending the email, i've
swapped the order where i add the routes and..bingo!. I've forgot the
priority based on adding order...
$router->addRoute('default', $default);
$router->addRoute('profile', $profile);
Sorry :D
On Thu, Aug 20, 2009 at 9:52 AM, Xavier Vidal Piera <[email protected]>wrote:
> Hi
>
> I'm developing a multilingual site and, at the moment, i've setup a
> multilingual route succesfully using a chain. The problem comes when i want
> to add regex routes and i don't know if i'm missing something because the
> route do not match.
>
> Testing URLs:
> /es/ --> works
> /es/application/index/index --> works (default module is application)
> /es/index --> works
> /ca/index --> works
> /es/michael-knight-p7764.html --> throws error as "profile" router does not
> match url, so falls into "default" router and this controller does not
> exists.
>
> Here's the code i'm using:
>
> // remove default routers
> $router = Zend_Controller_Front::getInstance()->getRouter();
> $router->removeDefaultRoutes();
>
> // setup language route
> $language = new Zend_Controller_Router_Route(
> ':language', array('language' => 'es')
> );
>
> // setup profile route (will be chained later) and add to the
> // router chained with language
> $profile =
> new Zend_Controller_Router_Route_Regex('([a-zA-Z-]*)-p(\d+).html',
> array(
> 'module' => 'application',
> 'controller' => 'profile',
> 'action' => 'index'
> ),
> array(1 => 'profile', 2 => 'id'), '%s-p%d.html');
>
> $profileChain = new Zend_Controller_Router_Route_Chain();
> $profileChain->chain($language);
> $profileChain->chain($profile);
>
> $router->addRoute('profile', $profileChain);
>
> // setup module route (will be chained later) and add to the
> // router chained with language
> $module = new Zend_Controller_Router_Route_Module(
> array(
> 'module' => 'application',
> 'controller'=> 'index',
> 'action' => 'index'
> ),
> Zend_Controller_Front::getInstance()->getDispatcher(),
> Zend_Controller_Front::getInstance()->getRequest()
> );
>
> $module->isAbstract(true);
>
> $default = new Zend_Controller_Router_Route_Chain();
> $default->chain($language);
> $default->chain($module);
>
> $router->addRoute('default', $default);
>
> --
> Xavier Vidal Piera
> Director Tècnic de Citrusparadis.com - Grupo Intercom
> Enginyer Tècnic Informàtic de Gestió
> Tècnic Especialista Informàtic d'equips
> [email protected]
> http://web.xaviervidal.net
> 610.68.41.78
>
--
Xavier Vidal Piera
Director Tècnic de Citrusparadis.com - Grupo Intercom
Enginyer Tècnic Informàtic de Gestió
Tècnic Especialista Informàtic d'equips
[email protected]
http://web.xaviervidal.net
610.68.41.78