2011-07-19 9 views
1

私は私のレイアウトで、私は、私は、言語を切り替えることができ、私はリンクを生成し、各ページにあるのでsymfonyのスイッチ言語

<?php foreach (sfConfig::get('app_cultures_enabled') as $key => $lng): ?> 
    <?php echo link_to_if($sf_user->getCulture() != $lng, 
    "<img src=\"/images/flags/$lng.png\" alt=\"$lng\">", 
    preg_replace('/sf_culture=[a-z][a-z]/', 'sf_culture='.$lng, $sf_context->getRouting()->getCurrentInternalUri(true)))?> 
    <?php endforeach ?> 

を持って、.Userは、言語を切り替えることができsymfonyの1.4.11を使用しています。 しかし、私は次の敗走を持つページがあります。

page: 
    url: /:sf_culture/page/:slug 
    param: { module: page, action: show} 
    requirements: { sf_culture: (?:se|no|en), sf_method: GET } 

をそして、私はこのページに行くとき、私はエラーを持って、その:

「/:sf_culture /ページ/:スラッグ」ルートがいくつか欠けている必須がありますパラメータ(:slug)。

私はこの権利を読んでいる場合

答えて

2

が、それはあなたが模倣しようとしているように見えます。..

<?php echo link_to_if($sf_user->getCulture() != $lng, 
     "<img src=\"/images/flags/$lng.png\" alt=\"$lng\">", 
     preg_replace('/sf_culture=[a-z][a-z]/', 'sf_culture='.$lng, $sf_context->getRouting()->getCurrentInternalUri(true)))?> 

でその問題はそれがスラグとのリンクを生成することができないと思います、またはスラッグ変数は$sf_context->getRouting()->getCurrentInternalUri(true)です。

私はこのように言語切り替えリンクを実行したことはありませんが、基本的にはそれを "slug"という変数として渡す必要があります。どこかでその魔法のlink_to_if()関数で、あなたは持っている必要があります。そのスラグ与え

'&slug=' . $slug // the slug! 

は...ルーティングルールを期待しているという名前のパラメータです。

UPDATE:

これは私が正常に言語を変更したい方法です:

私はテンプレートなしで別のアクション(例えばchangeLanguage)を作成し、言語とそれへのリンクを作成したいですパラメータとして:

mysite.com/change-language/fr/ (?lang=fr) 
mysite.com/change-language/de/ (?lang=de) 
mysite.com/change-language/es/ (?lang=es) 

そのアクションで、私は、ユーザーBをリダイレクトするために、言語と私がやりたい何かを変更し、$this->redirect($request->getReferer())を使用するように$this->getUser()->setCulture($lang)を使用します彼らが来たページを確認してください。アプリで多言語URLを使用する必要がある場合は、URLパラメータ(「スラッグ」など)から独自のページにレンダリングされるようにします。また、SEOを念頭に置きながら、リダイレクトなどを使わずに(リンクジュースを渡すために)、別の言語ページに直接リンクする必要があるため、やや複雑になります。

希望に役立ちます。

+0

ありがとうございます!私はそれは言語を切り替えるための非常に良い方法ではないと思う...私はアプリから$ lngを得るが、私はまたスラグを取得する必要があります...どのように言語を切り替える? – denys281

+0

@ denys281:アップデートを追加しました。 – Tom

+0

ありがとう!私はプラグインを見つけるが、それはうまくいけないsfDoctrineCultureFlagsPlugin)それをやってみるよ) – denys281

関連する問題