Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp url中的自动前缀_Cakephp_Cakephp 2.0 - Fatal编程技术网

Cakephp url中的自动前缀

Cakephp url中的自动前缀,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我正在我的应用程序中使用语言前缀: Router::connect('/:language/:controller/:action/*', array(), array('language' => '[a-z]{3}')); 当我使用$this->Html->link('title',$url\u array)时,我必须手动设置语言前缀。 我想要的是,当前缀出现在当前url中时,当我使用->lin

我正在我的应用程序中使用语言前缀:

Router::connect('/:language/:controller/:action/*',
                       array(),
                       array('language' => '[a-z]{3}'));
当我使用
$this->Html->link('title',$url\u array)
时,我必须手动设置语言前缀。 我想要的是,当前缀出现在当前url中时,当我使用
->link(…)
时,它应该自动将此前缀添加到url中。只有当我设置这个前缀时,它才应该是不同的


有可能吗?

如果要在应用程序范围内(而不是每个用户)管理区域设置,则应检查AppController的beforeFilter()中URL中的当前区域设置。
路由器中的:language前缀将确保为不同本地化内容提供唯一的URL

$this->Html->link()

因此,在您的
AppController::beforeFilter()
中,使用if()语句来检测请求的语言环境,并根据请求执行以下操作:

Configure::write('Config.language', 'fre');

这样做将确保I18n和访问相同的语言值

如果要管理每个用户的应用程序区域设置,可以在会话中存储当前区域设置:

class AppController extends Controller {
    public function beforeFilter() {
        Configure::write('Config.language', $this->Session->read('Config.language'));
    }
}
当然,您也应该使用。看看蛋糕书的那一部分。 哦,是的,那篇文章的“小字”中提到了一些非常重要的东西:

本地化应用程序的另一个方面不包括在翻译函数的使用中,那就是日期/货币格式。不要忘记CakePHP是PHP:),因此要设置这些内容的格式,需要使用setlocale。 如果将计算机上不存在的区域设置传递给setlocale,则该设置将无效。通过在终端中运行命令
locale-a
,可以找到可用语言环境的列表


如果要管理整个区域设置应用程序(而不是每个用户),应检查AppController的beforeFilter()中URL中的当前区域设置。
路由器中的:language前缀将确保为不同本地化内容提供唯一的URL

$this->Html->link()

因此,在您的
AppController::beforeFilter()
中,使用if()语句来检测请求的语言环境,并根据请求执行以下操作:

Configure::write('Config.language', 'fre');

这样做将确保I18n和访问相同的语言值

如果要管理每个用户的应用程序区域设置,可以在会话中存储当前区域设置:

class AppController extends Controller {
    public function beforeFilter() {
        Configure::write('Config.language', $this->Session->read('Config.language'));
    }
}
当然,您也应该使用。看看蛋糕书的那一部分。 哦,是的,那篇文章的“小字”中提到了一些非常重要的东西:

本地化应用程序的另一个方面不包括在翻译函数的使用中,那就是日期/货币格式。不要忘记CakePHP是PHP:),因此要设置这些内容的格式,需要使用setlocale。 如果将计算机上不存在的区域设置传递给setlocale,则该设置将无效。通过在终端中运行命令
locale-a
,可以找到可用语言环境的列表