0

空でない場合にのみパラメータでCakePHPルートを使用するための解決策はありますか?

今、私は以下のコードを書いていますが、もっと良いものが欲しいです:

if(Configure::read('Config.language') !== 'en') { // en is default language
    $language = '/:language';
} else {
    $language = '';
}

Router::connect($language .'/'. __('register', true), array(
    'controller' => 'users',
    'action' => 'register'));

このコードは完全に機能しますが、url() メソッドで AppHelper に言語を設定する必要があります。

古いアプリでは、常に Router::connect: が重複していました。

Router::connect('/:language/'. __('register', true), array(
    'controller' => 'users',
    'action' => 'register')); // for all languages without default language
Router::connect('/'. __('register', true), array(
    'controller' => 'users',
    'action' => 'register')); // only for default language (en)

多分最も簡単な解決策がありますか?

4

2 に答える 2

4

2 つのルートを使用する必要がありますが、言語ベースのルートに「persist」オプションを追加してください。「persist」を追加すると、URL を生成するたびに「language」キーを指定する必要がなくなります。

// for all languages without default language. 
Router::connect(
    '/:lang/'. __('register', true),
    array(
        'controller' => 'users', 
        'action' => 'register'
    ), 
    array(
        'persist' => array('lang')
    )
);

// only for default language (en)
Router::connect(
    '/'. __('register', true),
    array(
        'controller' => 'users', 
        'action' => 'register'
    )
); 

CakeDC の I18nプラグインもチェックアウトすることをお勧めします。

于 2013-01-20T18:02:23.750 に答える
0

わかりました、これらはうまく機能しますが、まだ別の問題があります。

デフォルトの言語Configure::write('Config.language');を bootstrap.php で en に設定しました

次に、次のような URL のシェマを書きました。

Router::connect('/:language/'. __('register', true), array('controller' => 'users', 'action' => 'register'), array('persist' => array('lang')));
Router::connect('/'. __('register', true), array('controller' => 'users', 'action' => 'register')); 

また、ユーザーが AppController の beforeFilter で言語を変更すると (新しい Config.language を設定)、静的な .po および db のコンテンツは完全に機能しますが、リンクは翻訳されません。パラメータは機能し:languageますが、魔法の機能は機能__()Router:connect()ません。

最初にロードされるのはbootstrap.phpなので、次はrouter.php、最後はAppController.phpです。

私の質問は、router.php にリンクを強制的に変換させる方法 ( __()) です。

申し訳ありませんが、それでも英語を学びます...

于 2013-01-22T07:54:26.733 に答える