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 回答