【发布时间】:2013-12-16 04:22:56
【问题描述】:
我对 silex 很陌生,但对基于 Java 的 MVC 框架有经验。
我遇到的问题似乎是如何在 URL 参数中接受某些特殊字符。
我有一个这样定义的控制器:
$app->get('/editPage/{fileName}', function ($fileName) use ($app,$action) {
return $app['twig']->render('edit.twig.html',$action->editPage($fileName));
});
这适用于以下网址:
- /myapp/editPage/file.html
- /myapp/editPage/file-2.html
但如果我通过编码“/”或 %2F,则不会选择路线,并且会得到 404。 1. /myapp/editPage/folder%2Ffile.html
mod_rewrites 规则应该将任何不存在的文件路径路由到定义 silex 的 index.php,所以我不确定发生了什么。
我只需要一种方法来使用“/”捕获此特定页面的值。没有冲突的子页面,所以如果有一种方法可以通配路径“/editPage/{.*|filename}/”或我缺少的东西。
【问题讨论】:
-
找到了相关的 Q,但该用户想要多个未知数量的不同参数,并且解决方案都朝着这个目标工作。我只有一个参数,我只需要调整默认匹配规则,这些规则似乎在“/”上很难匹配到分解参数。
-
第二个答案似乎建议您可以使用 assert silex.sensiolabs.org/doc/usage.html#requirements 来允许您想要的。
-
不,它没有。这些都允许变量的某种格式,但不允许在其中包含编码的“/”。 (如果路由从未被确认,则不能使用断言)