【发布时间】:2020-03-04 00:12:18
【问题描述】:
我正在尝试在我的项目中设置 symfony/路由组件..
一切顺利,但是当我为路由定义前缀时,它会为该前缀的根路径抛出 route not found 异常。
例如,假设我有一堆管理路由。我没有在每条路由上定义“admin”关键字,而是为所有这些设置了前缀路由。所以我的仪表板路径从"/admin" 变成了"/"。现在它抛出找不到路由错误..
当我检查路线集合时。仪表板路径似乎为"/admin/"。而且它与REQUEST_URI不匹配
我是否设置了组件不当或需要注意一些事项?
这里是RouteProvider的一部分
foreach (scanDirectory(ROOT_PATH . "/routes") as $file) {
$subCollection = new RouteCollection();
$filepath = ROOT_PATH . "/routes/" . $file;
$routes = Yaml::parseFile($filepath);
$prefix = "api";
if (array_key_exists("prefix", $routes)){
$prefix = $routes["prefix"];
unset($routes["prefix"]);
}
foreach ($routes as $name => $route) {
$parameters = (new RouteParser($route))->parse();
$subCollection->add(
$name,
new Route(...$parameters)
);
}
$subCollection->addPrefix($prefix);
$subCollection->addOptions([
"trailing_slash_on_root" => false
]);
$collection->addCollection($subCollection);
}
【问题讨论】:
-
那么 /admin/ 是唯一给您带来问题的途径吗?您可能需要将 trailing_slash_on_root 配置为 false。如果链接没有帮助,请考虑更新您的问题以显示您如何配置路线。
-
@Cerad 我将它添加为路由收集的选项,但没有任何改变。
-
再次,您确实需要显示一些代码。有多种方法可以配置路由并匹配它们。如果编写一个最小的测试用例可以揭示解决方案,我不会感到惊讶。
-
@Cerad 抱歉这个问题。我之前没有分享任何代码,因为我认为我遗漏了一些东西。如果我很好地解释了我的问题,就不需要代码了。现在我更新了我的问题并分享了我的路线提供者的某些部分。
标签: php symfony symfony-routing