0

我正在使用Symfony2带有Symfony2路由组件的组件。我的 routes.yml 包含另一个特定的 sub-app-routes.yml:

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

sub-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 生成一个 url:

        $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_PATHABSOLUTE_URL

一些想法为什么symfony 2会生成如此奇怪的网址?

4

0 回答 0