Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2,未找到路由和默认值_Symfony_Routes - Fatal编程技术网

Symfony2,未找到路由和默认值

Symfony2,未找到路由和默认值,symfony,routes,Symfony,Routes,这个问题很简单,但我有问题。 我们有简单的路线 profile_api_info: pattern: /api/info/{apiID} defaults: { _controller: SiteProfileBundle:Api:info, apiID: null} 当我们使用这样的url作为 http://some.site/api/info/123 我们将得到控制器的正确结果。 但是当我们用这个的时候 http://some.site/api/info/ 我们会出错

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

profile_api_info:
    pattern:  /api/info/{apiID}
    defaults: { _controller: SiteProfileBundle:Api:info, apiID: null}
当我们使用这样的url作为

http://some.site/api/info/123
我们将得到控制器的正确结果。 但是当我们用这个的时候

http://some.site/api/info/
我们会出错,为什么

No route found for "GET /profile/api/info/" 
我们已经为“APID”设置了“默认值”,但symfony2表示没有路由。有人能建议怎么处理吗?我想要路线

http://some.site/api/info
http://some.site/api/info/
具有与相同的控制器

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

但是如果'apid'=null或false,则无所谓。

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

语法和所有内容看起来都是正确的。但是,带有尾随斜杠(
http://some.site/api/info/
)不起作用,但
http://some.site/api/info
应该。

您有两个选择

选项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: 设置一条额外的路线。 (这是我的偏好。)

在控制器中,确保将
$apid
的默认值设置为null

public function infoAction($apiID = null){...}
使用带有一个控制器的两个路由方法应适用于以下所有URL:

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

我清除了缓存-仍然是一样的:(我使用的是create by composer标准供应商版本2.3。我知道,只有当“APID”为空时,我才感兴趣。由于该斜线,找不到路由。是的,我知道我们可以为“base+slash”创建特定路由,但这不是解决方案:(那么您的问题在其他地方,因为您的路线定义与
http://some.site/api/info/123
http://some.site/api/info
.Symfony docs明确指出,带有可选参数的路由将无法使用尾随斜杠。这不是我正在搜索的解决方案,但我认为没有其他解决方案到处搜索=\
http://some.site/api/info
http://some.site/api/info/
http://some.site/api/info/123