Symfony 2路由:UrlGenerator生成错误的相对URL

时间:2013-09-03 11:51:21

标签: php symfony routes components

我正在将Symfony2组件与Symfony2路由组件一起使用。 我的routes.yml包含另一个特定的子app-routes.yml:

subapp:
    resource: "etc/subapp_routes.yml"
    prefix: /subapp

子app-routes.yml有条目:

subapp_calculations_list:
pattern: /calculations
defaults:     { _controller: 'My\Project\Controller\Subapp\Calculations::listAction' }
requirements:
    _method: GET

subapp_calculations_result:
pattern: /calculation/{id}/result
defaults:     { _controller: 'My\Project\Controller\Subapp\Calculations::resultAction' }
requirements:
    _method: GET

......到目前为止效果很好。

然后,我正在使用Symfony\Component\Routing\Generator\UrlGenerator从subapp_routes.yml生成网址:

        $requestContext = new RequestContext($_SERVER['REQUEST_URI']);

        $router = new Router(
            new YamlFileLoader(new FileLocator(array('.'))),
            "etc/routes.yml",
            array(),
            $requestContext
        );

        $this->urlGenerator = new UrlGenerator($router->getRouteCollection(), $requestContext);

[...]

    public function getRoute($route, $vars = array()) {
        return $this->urlGenerator->generate($route, $vars);
}

在(php)模板中:

<a href="<?= $this->getRoute('subapp_calculations_result', array('id' => $job['job_id'])) ?>">

但它总是返回与生成的url的绝对路径连接的当前路径。

实施例: 我在

(http://) project/subapp/calculations

我在模板中生成了位于

的内容的网址
(http://) project/subapp/calculations/123/results 

然后url生成器返回

(http://) project/subapp/calculations/subapp/calculations/123/results 

......这当然是错的。

我还尝试将ABSOLUTE_PATH更改为ABSOLUTE_URL,这与第一部分的主机名相同。

为什么symfony 2会产生如此奇怪的网址?

0 个答案:

没有答案