1

ルートにローカリゼーション情報を追加したい。

現在、私のルート定義は次のとおりです。

    Route::controller('browse');
    Route::controller('search');
    Route::controller('support');
    Route::controller('filter');

/url/browseURLをから/url/en/browseなどに変更したい。

URLに言語がない場合、アプリケーションはデフォルトの言語で同じルートにリダイレクトする必要があります。これは、古いものにアクセスする/url/browseとにリダイレクトされることを意味し/url/default/browseます。

フィルタを使用して簡単な解決策を作成または見つけようとしましたが、失敗しました。手伝ってくれてありがとう!

4

1 に答える 1

2

config で Default Application Language および Supported Languages 配列を使用してみてください。

サポートされている言語に言語を入れると、そのセグメントで始まるすべてのルートが現在の言語を設定し、それがルート URL と見なされます。

要件との 1 つの違いは、リダイレクトの代わりに、URL に言語がなくてもデフォルト言語が受け入れられることです。

編集:リダイレクトに役立つフィルタ。

Route::filter('pattern: *', array('name' => 'langredirect', function()
{
    $uri = Request::server('request_uri');
    $segments = explode('/', $uri);
    if ( ! array_get(Config::get('application.languages'), $segments[1]) )
    {
        return Redirect::to(URL::base() . '/' . Config::get('application.language') . $uri);
    }
}));
于 2012-12-07T13:13:09.513 に答える