我正在将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
会产生如此奇怪的网址?