Monday, February 20, 2012

2.x trouble with routing

I'm migrating a site to 2.x and have run into some problems with
routing. URLs for the site are preceded by a 2-letter code for
language. My routes.php begins:

$lang_regexp = implode('|', Configure::read('Config.languages'));

Router::connect(
'/',
array('controller' => 'languages', 'action' => 'choose')
);

// eg. routes like /en or /fr
Router::connect(
'/:lang',
array('controller' => 'volumes', 'action' => 'current'),
array(
'lang' => $lang_regexp,
)
);

So, an empty URL is directed to the LanguagesController, which decides
where to redirect:

public function choose()
{
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

if (empty($lang) || !in_array($lang, Configure::read('Config.languages')))
{
/* assign first in list
*/
$lang = array_shift(Configure::read('Config.languages'));
}

//die(debug(Router::parse("/${lang}")));
$this->_setLanguage($lang);
$this->redirect(Router::parse("/${lang}"));
}

If I uncomment the die() call, I see:

Array
(
[lang] => en
[named] => Array
(
)

[pass] => Array
(
)

[controller] => volumes
[action] => current
[plugin] =>
)

This appears to be correctly parsed. However, the redirects goes to:
/volumes/current/lang:en

This does display the correct page, but it's not what I want.

If I manually enter "/en" I also get the correct page. Entering "/fr"
likewise, with the language settings likewise correctly handled.

So, why is Router::parse() working, but the redirect (sort of) not?
This was working flawlessly with 1.3 so I assume it's due to a change
somewhere. Default routing is enabled, but comes at the end of
routes.php (disabling it leads to missing controller errors having to
do with loaded elements, apparently).

--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate