超过一次长谈解释说,错误,下面是解释一切的截图:URL包含“E”,它不再配衬请求路由
当我们进入一个“e”内对应于rss_category
的URL,它不再匹配的路由。参见: !
我们通过强制要求{slugCat}
接受任何.^
解决了这个(他们之前没有任何要求)
如果能帮助别人somday,如果任何人有一个合理的解释,我会很高兴听到(在Symfony 2.1.1下运行)。
超过一次长谈解释说,错误,下面是解释一切的截图:URL包含“E”,它不再配衬请求路由
当我们进入一个“e”内对应于rss_category
的URL,它不再匹配的路由。参见: !
我们通过强制要求{slugCat}
接受任何.^
解决了这个(他们之前没有任何要求)
如果能帮助别人somday,如果任何人有一个合理的解释,我会很高兴听到(在Symfony 2.1.1下运行)。
哇,一方有难。发生这种情况是因为在编译路由时,symfony会尝试使用变量名称前面的字符作为分隔符。此代码是从RouteCompiler.php:
// Use the character preceding the variable as a separator
$separators = array($match[0][0][0]);
if ($pos !== $len) {
// Use the character following the variable as the separator when available
$separators[] = $pattern[$pos];
}
$regexp = sprintf('[^%s]+', preg_quote(implode('', array_unique($separators)), self::REGEX_DELIMITER));
的Symfony这样做,因为通常你都会有某种隔膜的变量名之前,如/上传/ rssArticle/{} slugCat,路由其中“/”将是分隔符,它试图让你使用这个分隔符来分隔包含多个变量的路由中的变量。在你的情况下,变量前的字符是'e',该字符变成分隔符,这就是你的路由不匹配的原因。如果你的路线是beed/upload/rssArticles {slugCat},那么's'就是分隔符,那就是你无法使用的字符。
也许你可以创建symfony的路由器组件上的问题。如果是字母或数字,我认为前面的字符不应该被用作分隔符。
我自己添加了这个问题:https://github.com/symfony/symfony/issues/5492 –
原来已经有这个问题的拉取请求:https://github.com/symfony/symfony/pull/5469 –