【问题标题】:Clicking on the language button removes the id params in the URL单击语言按钮会删除 URL 中的 id 参数
【发布时间】:2013-10-24 20:02:06
【问题描述】:

所以这是我的问题。我有一个网站,我们目前正在使用 cakephp 翻译成法语。当我在带有诸如“www.mydomain.com/eng/store/view/1”之类的网址的页面上时,我在法语链接中看到的网址是“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 中只有一个控制器和一个动作的页面。

【问题讨论】:

  • 欢迎来到stackoverflow!

标签: internationalization routing cakephp-1.3


【解决方案1】:

我发现了为什么我的参数没有出现在语言链接中的实际问题。我不完全确定这是最好的选择,但它对我有用。

当添加语言的链接而不是:

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}'));

为这些做了诀窍。

【讨论】:

    【解决方案2】:

    这适用于所有情况并传递变量:

    Router::connect('/action/**', array('controller' => 'controller_name', 'action'=>'action_name'));
    

    如果您想限制您的网址并将变量添加到您的网址 =>例如控制器/动作/变量

     Router::connect('/action/:id', array('controller' => 'controller_name', 'action'=>'action_name')
                                  , array('pass'=>array('id')));
    

    Here is reference

    希望对你有帮助

    【讨论】:

    • 抱歉,回答迟了。我已经尝试过您的解决方案,并且已阅读参考资料。我对路由及其工作原理有了更好的了解,但遗憾的是,这似乎不是我在这种特定情况下所需要的。当您单击法语或英语按钮时,最后的参数仍然被切断。我相信我可能还缺少其他东西。
    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多