简单的问题,但我有问题。 我们有简单的路线
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'设置了'默认值',但symfony2表示没有路由。有人可以建议如何处理它吗?我想要路线
http://some.site/api/info
http://some.site/api/info/
与
具有相同的控制器http://some.site/api/info/123
但是'apiID'= null或false,无论如何。
答案 0 :(得分: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
的默认值设置为null。
public function infoAction($apiID = null){...}
使用两个路径和一个控制器方法应该适用于以下所有网址:
http://some.site/api/info
http://some.site/api/info/
http://some.site/api/info/123
答案 1 :(得分:0)
我多次遇到此问题并清除缓存,以便Symfony可以重建路由定义,通常可以解决问题。
语法和一切看起来都正确。但是,带有斜杠(http://some.site/api/info/
)的路线不起作用,但http://some.site/api/info
应该有效。