CakePHP setflash页面刷新不会将语言保留在url中

时间:2014-09-11 08:18:28

标签: cakephp localization routes

我有一个多语言网站,但是当我不使用setFlash进行重定向时,它会从网址中删除该语言。示例:如果联系表单未验证,则只执行setFlash而不使用redirect,以便用户输入数据不会丢失。但它会刷新页面并从我的网址中删除语言部分。当我在redirect后执行setFlash时,这不会发生,因为我将language param与redirect一起提供。工作流程:

我从页面 website.com/eng/contact 开始(请注意语言部分)。我填写联系表格并填写所有必填项。它会将我重定向到 website.com/eng/contact/send 。这很好,我想要的。但是,当我没有提供有效的电子邮件地址时,它会显示错误(很棒),但网址已更改为 website.com/forms/contact (请注意缺少的语言部分,以及它不使用我的路线)。我究竟做错了什么?我的代码:

Formscontroller.php

public function contact() {
    if ($this->request->is('post')) {
        $this->Form->set($this->request->data);
        if ($this->Form->validates()) {        
            if($this->Form->save($this->request->data)){
                $this->redirect(array('controller' => 'forms', 'action' => 'contact_success', 'language' => $this->Session->read('Config.language')));
            } else {
                $this->Session->setFlash(__('Er ging iets mis met het versturen van uw contactformulier, probeer het opnieuw.'), 'flash_error');
            }
        } else {
            $this->Session->setFlash(__('Niet alle verplichte velden zijn ingevuld.'), 'flash_error');
        }
    }
}

routes.php文件

Router::connect('/:language/pages/*', array('controller' => 'pages', 'action' => 'display'));

Router::connect('/:language/contact', array('controller' => 'forms', 'action' => 'contact'), array('language' => 'ned|eng'));
Router::connect('/:language/contact/verzonden', array('controller' => 'forms', 'action' => 'contact_success'), array('language' => 'ned'));
Router::connect('/:language/contact/send', array('controller' => 'forms', 'action' => 'contact_success'), array('language' => 'eng'));

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
Router::connect('/:language', array('controller' => 'pages', 'action' => 'display', 'home'), array('language' => 'eng|ned'));
Router::connect('/:language/:controller/:action/*', array(), array('language' => '[a-z]{3}'));

CakePlugin::routes();
require CAKE . 'Config' . DS . 'routes.php';

1 个答案:

答案 0 :(得分:0)

我正在朝着错误的方向寻找我的问题。正如ndm在他对我的问题的评论中指出的那样,它与我的表格的行为有关,它没有语言部分。所以感谢ndm让我指向正确的方向!