2

私は他の情報(つまりスタートページ)なしでロケールだけのルートを持っています:

homepage:
    pattern:  /{_locale}/
    defaults: { _controller: OurStartBundle:Default:index }

ルートを直接呼び出すと機能しますが(つまり、localhost / de_DE /)、転送するとエラーがスローされます。

コントローラ名「/app_dev.php/de_DE/」を解析できません。

次のようなコントローラーメソッドを使用して転送します。

$locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);    
return $this->forward($this->generateUrl('homepage', array('_locale' => $locale)));

なぜこれが機能しないのか、誰かが思いついたのですか?

4

2 に答える 2

5

バンドル文字列ではなく、URIにリクエストを転送しようとしています。

たとえば、転送通話は次のようになります...

$response = $this->forward('OurStartBundle:Default:index', array(
    '_locale' => 'de_DE'
));
于 2012-07-12T12:48:01.120 に答える
0

問題は、リダイレクトが必要な場所で$ this-> forward()を使用し、$ this-> redirect()を使用する必要があることでした。

解決策は次のとおりです。

$locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
return $this->redirect($this->generateUrl('OurStartBundle_homepage', array('_locale' => $locale)));
于 2012-07-12T12:54:20.213 に答える