【问题标题】:Symfony Routing: Can call route but not forward toSymfony 路由:可以调用路由但不能转发到
【发布时间】:2012-07-12 05:11:44
【问题描述】:

我有一条仅针对区域设置的路线,没有任何其他信息(即起始页):

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)));

有人知道为什么这不起作用吗?

【问题讨论】:

    标签: internationalization url-routing locale symfony-2.1


    【解决方案1】:

    您正在尝试将请求转发到 URI,而不是捆绑字符串。

    例如,您的前转呼叫应该是...

    $response = $this->forward('OurStartBundle:Default:index', array(
        '_locale' => 'de_DE'
    ));
    

    【讨论】:

    • 啊,不,不完全是我想要的,因为我确实想更改 URL。但我在你的回答中找到了我的答案。我必须使用 $this->redirect($url) 而不是 $this->forward(..)。对。
    【解决方案2】:

    问题是我在想要重定向的地方使用了 $this->forward(),应该使用 $this->redirect()。

    解决办法是:

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

    【讨论】:

      猜你喜欢
      • 2018-08-05
      • 2016-01-30
      • 2019-02-22
      • 2016-07-03
      • 2019-07-03
      • 2017-12-29
      • 2019-11-28
      • 2016-02-27
      相关资源
      最近更新 更多