我正在使用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_PATH
。ABSOLUTE_URL
一些想法为什么symfony 2
会生成如此奇怪的网址?