0

简单的问题,但我有问题。我们有简单的路线

profile_api_info:
    pattern:  /api/info/{apiID}
    defaults: { _controller: SiteProfileBundle:Api:info, apiID: null}

当我们使用这样的网址时

http://some.site/api/info/123

我们将得到控制器的正确结果。但是当我们使用这个

http://some.site/api/info/

我们会有错误,为什么?

No route found for "GET /profile/api/info/" 

我们已经为我们的 'apiID' 设置了 'defaults' 但 symfony2 说没有路由。有人可以建议如何处理它吗?我要路线

http://some.site/api/info
http://some.site/api/info/

具有相同的控制器

http://some.site/api/info/123

但不管是 'apiID' = null 还是 false。

4

2 回答 2

1

你有两个选择。

选项 1: 传递您的默认参数。

profile_api_info:
    pattern:  /api/info/{apiID}
    defaults: { _controller: SiteProfileBundle:Api:info, apiID: null}

但是,您将不能有尾随/。这将是正确的:http://some.site/api/info 这将是不正确的 http://some.site/api/info/

选项 2: 设置额外的路线。(这将是我的偏好。

profile_api_info_woId:
    pattern:  /api/info/
    defaults: { _controller: SiteProfileBundle:Api:info}

在您的控制器中确保将默认设置为$apiID空。

public function infoAction($apiID = null){...}

使用两个路由和一个控制器方法应该适用于以下所有 url:

http://some.site/api/info
http://some.site/api/info/
http://some.site/api/info/123
于 2013-09-30T21:54:37.197 回答
0

我已经多次遇到这种情况并清除缓存,以便 Symfony 可以重建路由定义通常可以解决问题。

语法和一切看起来都是正确的。但是,带有斜杠 ( http://some.site/api/info/) 的路由不起作用,但http://some.site/api/info应该起作用。

于 2013-09-30T19:08:01.717 回答