Symfony2,找不到路由并默认

时间:2013-09-30 19:01:44

标签: symfony routes

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

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,无论如何。

2 个答案:

答案 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应该有效。