如果不存在,CakePhp会将语言附加到URL

时间:2013-09-28 19:05:33

标签: internationalization routing

我是CakePHP的新手 我试图在用户输入的情况下将语言附加到URL: mydomain(dot)com / users

然后,网址必须更改为http://mydomain.com/eng/users

好吧,我正在使用Translate行为,在我的routes.php文件中我有:

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

好的到目前为止一切都很完美。 但是在我的contorllers / AppController.php中,我尝试附加网址,我收到错误

这就是我在afterFilter函数中所拥有的:

if (empty($this->params['lang']) ){
  //Redirect to a language url 
  $this->redirect(array(
  'lang'=> 'eng', 
  'controller' => $this->params['controller'], 
  'action' => $this->params['action'])
); 


}

这可以,但是当我尝试访问http:/mydomain.com/users/View/4时 在网址中我可以看到http:/ mydomain(dot)com / eng / users / View / 4 但我在浏览器中看到的是http:/ mydomain(dot)com / users / View /

我的问题是:达到我需要的最佳方式是什么? 这是一个插件吗?或者我如何在CakePHP中处理这个?

1 个答案:

答案 0 :(得分:0)

那问题出在我的router.php

我有--->                                                              Router :: connect('/:lang /:controller / ',array(),array('lang'=>'[a-z] {3}')); Router :: connect('/:lang /:controller /:action / ',array(),array('lang'=>'[a-z] {3}'));

正确的方法是-----> Router :: connect('/:lang /:controller /:action / ',array(),array('lang'=>'[a-z] {3}')); Router :: connect('/:lang /:controller / ',array(),array('lang'=>'[a-z] {3}'));