Маршрутизация для CakePHP i18n - PullRequest
       5

Маршрутизация для CakePHP i18n

1 голос
/ 16 сентября 2011

Я пытаюсь интернационализировать все страницы на моем сайте CakePHP в следующем формате:

  • / о / о
  • / ж / о (для китайской версии)
  • и т.д.

У меня уже есть все маршруты, определенные в router.php, например.

Router::connect('/about/*', array('controller' => 'pages', 'action' => 'about'));
Router::connect('/login/*', array('controller' => 'users', 'action' => 'login'));
// etc...

Как мне сделать так, чтобы / language / prefix автоматически применялся ко всем Router :: connect () s?

В файле router.php библиотеки CakePHP приведен пример для подобной маршрутизации, который приведен в следующем виде:

 Router::connect('/:lang/:controller/:action/:id', 
                 array(), array('id' => '[0-9]+', 'lang' => '[a-z]{2}'));

Это, однако, работает только для типа маршрутизации по умолчанию (например, / pages / about /), а не специально определенного типа, такого как / about для моего примера.

Другими словами, он будет работать, когда пользователь посещает / zh / pages / about, но не работает, когда пользователь посещает / zh / about

Есть предложения или мне нужно вручную переписать все мои Router :: connect (), чтобы включить lang?

1 Ответ

2 голосов
/ 23 ноября 2011

Попробуйте это:

    Router::connect('/:lang/:controller', array(), array('lang' => '[a-z]{2}'));
    Router::connect('/:lang/:controller/:action', array(), array('lang' => '[a-z]{2}'));
    Router::connect('/:lang/:controller/:action/*', array(), array('lang' => '[a-z]{2}'));
...