2012-09-03 91 views
0

我想要實現的是,我可以在URL僅更改語言前綴,但得到的問題...... 還有就是我的路線:CakePHP的語言路由

$lang_regexp = implode('|', Configure::read('Config.languages')); 
Router::connect('/', array('controller' => 'languages', 'action' => 'choose')); 
Router::connect('/:lang/:controller/:action/*', 
       array(), 
       array('lang' => $lang_regexp)); 


// actual default page; can be any controller 
    Router::connect('/:lang/pages/ajax_newsletter', array('controller' => 'pages', 'action' => 'ajax_newsletter')); 
    Router::connect('/:lang/', 
    array('controller' => 'pages', 'action' => 'index', 'home'), 
    array('lang' => $lang_regexp)); 
    Router::connect('/:lang/:slug', array('controller' => 'pages', 'action' => 'pages'), array('lang' => $lang_regexp)); 
    Router::connect('/:slug', array('controller' => 'pages', 'action' => 'pages'), array('lang' => $lang_regexp)); 

    Router::connect('/:lang/special_offers', array('controller' => 'pages', 'action' => 'offers')); 
    Router::connect('/:lang/special_offers/*', array('controller' => 'pages', 'action' => 'offers_city')); 
    Router::connect('/:lang/news/*', array('controller' => 'pages', 'action' => 'news_article')); 
    Router::connect('/:lang/news', array('controller' => 'pages', 'action' => 'news')); 
    Router::connect('/:lang/:slug/:id/*', array('controller' => 'pages', 'action' => 'offers'), array('lang' => $lang_regexp)); 

    Router::connect('/cities/select', array('controller' => 'cities', 'action' => 'select')); 
    Router::connect('/cities/select/*', array('controller' => 'cities', 'action' => 'select')); 

我的語言切換:

$this->html->link($this->html->image('flag_ru.gif', array("alt"=>"", "width"=>"14px", "height"=>"12px", "title"=>"")), array("lang" => "rus"), array('escape' => false)); 

:lang/:slug是菜單項,所以如果我有這樣的語言變化,我得到localhost/rus/pages/pageslocalhost/eng/contact菜單......如何改變只有語言前綴?

回答

0

您可以訪問$this->request->controller$this->request->action以及passnamed以獲取傳遞參數和命名參數。

$this->html->link($this->html->image('flag_ru.gif', array("alt"=>"", "width"=>"14px", "height"=>"12px", "title"=>"")), array("lang" => "rus", "controller" => $this->request->controller, "action" => $this->request->action), array('escape' => false)); 

例如,woork。詳情請參閱here