在CakePHP中更改语言

在CakePHP中更改语言,php,cakephp,Php,Cakephp,我正在尝试在我的CakePHP应用程序中实现语言更改按钮。我遵循了cookbook(),现在我可以在用户登录后更改语言 我的语言按钮链接到我自己的LanguagesController中的操作,如下所示: public function sk() { $this->Session->write('Config.language', 'svk'); $this->redirect($this->referer()); } public function e

我正在尝试在我的CakePHP应用程序中实现语言更改按钮。我遵循了cookbook(),现在我可以在用户登录后更改语言

我的语言按钮链接到我自己的
LanguagesController
中的操作,如下所示:

public function sk() {
    $this->Session->write('Config.language', 'svk');
    $this->redirect($this->referer());
}

public function en() {
    $this->Session->write('Config.language', 'eng');
    $this->redirect($this->referer());
}
然后在
AppController beforeFilter()
函数中,我有以下内容:

if ($this->Session->check('Config.language')) {
        Configure::write('Config.language', $this->Session->read('Config.language'));
}
但是,这只在用户登录时起作用,我想让未登录的用户也更改应用程序语言。我试过这个:

public function en() {
    Configure::write('Config.language', 'eng');
    $this->redirect($this->referer());
}
但这对我不起作用

另一件事-我想将应用程序的默认语言更改为斯洛伐克语,但当我输入:

Configure::write('Config.language', 'svk');
对于
app/Config/bootstrap.php


提前感谢大家的帮助:)

Cake php提供了一种非常好的方法,可以在不登录系统的情况下执行函数。这就是
AppController
中的
$this->Auth->allow()

所以


在应用程序控制器中,您将在某处获得此行
$this->Auth->allow()
。在这种情况下,只需给出那些将要改变语言的动作名称。该函数也可以在没有用户登录的情况下开始工作。如果您在
AppController
中没有找到这一行,那么您也可以编写它。

在AppController中,您将在某处获得这一行
$this->Auth->allow()
。在这种情况下,只需给出那些将要改变语言的动作名称。该函数也可以在没有用户登录的情况下开始工作。请再试一次,它有效!很好,谢谢您的帮助:)@MarekGalinski请注意,将
$this->Auth->allow()
添加到
AppController::beforeFilter
将允许访问任何页面。我建议您将其添加到您的语言控制器中。另外请注意,斯洛伐克语言环境代码应为“slk”(ISO 639-2,来自版本2.3)。这并不是说我允许所有,我只是添加了“sk”和“en”(我自己在语言控制器中的操作)所以我想它是安全的。谢谢:):)很高兴能帮助你。在将
$this->Auth->allow()
添加到你的
AppController::beforeFitler()
时要小心,因为这会让一切公开。如果您只希望访问特定的操作,请在单个控制器和条件中使用它。阅读更多关于它的信息。我没有说在
AppController::beforeFitler()
中使用它。你只是假设而已。感谢
App Controller
看起来非常像
AppController
,因此值得一提,以防有人出现并以不同的方式解释它。