如果我有像:
这样的沉默路线$app->get('/project/{projectName}', function (Request $request, $projectName) use ($app) {
return $projectName;
})
->value('projectName', 'all')
->bind('project');
为什么我不能定义另一条路线,如:
$app->get('/projects', ...)
->bind('projects');
每当我尝试访问/projects
路由时,我都会被重定向到/projects/
并显示错误消息(NotFoundHttpException: No route found for "GET /projects/"
)。
引擎盖下是否有一些复数逻辑阻止了这个或其他什么可能干扰? (当将第二条路线重命名为其他任何东西时,它工作得很好,所以我认为这个项目/项目的命名是特定的。)
答案 0 :(得分:1)
这真的很奇怪。我试过这个:
$app->get('/project/{projectName}', function (Request $request, $projectName) use ($app) {
return $projectName;
})
->value('projectName', 'all')
->bind('project');
$app->get('/projects', function(Request $request) use ($app) {
return 'TEST';
})
->bind('projects');
在浏览器中调用 / projects 对我有用。我打印出'TEST'。这应该工作。检查你的琴弦,也许你拼错了。
* 编辑19.09.2013 *
您也可以考虑通过正则表达式修改路线匹配。为此,您可以使用assert
方法。这是一个例子:
$app->get('/{value}', function(Request $request) use ($app) {
return 'TEST';
})
->bind('projects')
->assert('value', '(projects)/{0,1}');
通过使用此方法,我在打开 / projects 和 / projects / 时获得'TEST'。这一切都取决于你想要达到的目标。另一篇有用的文章可能是How to allow slashes in routes (from the Symfony documentation)