所以这是我的问题。我有一个网站,我们目前正在使用Cakephp进行法语翻译。当我在带有诸如“ www.mydomain.com/eng/store/view/1”之类的URL的页面上时,在法语链接中看到的URL是“ www.mydomain.com/fre/store/view/” 。
这是我的routes.php中与商店页面相关的代码
Router::connect('/:language/:controller/:action/*',
array(),
array('language' => '[a-z]{3}'));
Router::connect('/store/:action/*', array('controller'=>'products'));
Router::connect('/store', array('controller'=>'products', 'action'=>'index'));
在我的app_helper.php中
function url($url = null, $full = false) {
if(!isset($url['language']) && isset($this->params['language'])) {
$url['language'] = $this->params['language'];
}
return parent::url($url, $full);
}
所以我的问题是:切换语言时,我应该怎么做才能使链接保持产品的最后参数?
注意:该链接非常适合在URL中仅包含一个控制器和一个操作的页面。
我发现了实际问题,为什么我的参数没有在语言链接中显示。我不确定这是最好的选择,但对我有用。
在添加该语言的链接时,而不是:
echo $this->Html->link('English', array('language'=>'eng'))
我在用
echo $this->Html->link('English', array('language'=>'eng')+$this->params['pass']);
看看是否存在路由问题并不是完全没有用,因为我发现许多缺陷导致其他页面无法访问正确的url,主要是pages文件夹下的页面。新增中
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
Router::connect('/:language/pages/*', array('controller' => 'pages', 'action' => 'display'), array('language' => '[a-z]{3}'));
为这些做了把戏。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句