1

だからここに私の問題があります。現在、cakephp を使用してフランス語に翻訳している Web サイトがあります。「www.mydomain.com/eng/store/view/1」などの URL のページにいる場合フランス語のリンクで表示される URL は「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 にコントローラーとアクションのみを含むページで完全に機能します。

4

2 に答える 2

1

パラメータが言語リンクに従っていない実際の問題を発見しました。これが最良の選択肢であるかどうかは完全にはわかりませんが、私にとってはうまくいきます。

代わりに言語のリンクを追加する場合:

echo $this->Html->link('English', array('language'=>'eng'))

私は使っている

echo $this->Html->link('English', array('language'=>'eng')+$this->params['pass']);

ルーティングの問題があるかどうかを確認することは、まったく役に立たないわけではありません。他のページ、主にページ フォルダーの下のページが正しい URL に移動しない多くの欠陥を発見したからです。追加する

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

これらのトリックを行いました。

于 2013-12-11T20:17:06.567 に答える
0

これはすべてのケースで機能し、変数を渡します。

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

ここで、URL を制限し、URL に変数を追加する場合 =>eg controller/action/variable

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

こちらが参考です

それが役に立てば幸い

于 2013-10-30T09:29:33.677 に答える