【发布时间】:2020-03-19 01:29:41
【问题描述】:
我一辈子都无法通过这条路线上班:
/***
* @Route("/load_base_data/{projectId}", name="load_base_data", methods={"GET"})
* @return Response
*/
public function loadBaseMeasures(int $projectId, DataLoadService $dataLoadService, ApiService $apiService)
{
$response = $apiService->initResponse();
$dataLoadService->generateFiles($projectId);
return new JsonResponse($response);
}
我尝试了 php bin/console debug:router,但它没有出现在列表中。 我试过 php bin/console cache:clear
这是我唯一遇到问题的路线。
【问题讨论】:
-
只是一个猜测,我懒得自己测试它,但将 /*** 更改为 /** 看看是否有帮助。我假设这是在控制器中,并且其他控制器路由正在显示。
-
必须是
loadBaseMeasuresAction吗? -
@craigh 不,不需要操作后缀。回到 S2,它在 yaml/xml 文件中定义路由时使用。但它不再是一个东西。
-
路由可以被具有完全相同的 name(字面意思是注释中的
name属性)的其他路由覆盖,删除前一个路由以支持后者。你能检查一下这条路线有一个唯一的名字吗? -
试试
bin/console router:match /load_base_data/123看看是否匹配。这会告诉你一个接近的匹配,如果它被覆盖。如果您甚至包含此控制器和激活的注释,还要检查您的 routing.yaml。