Symfony 4:控制器要求您为“$id”参数提供一个值

Symfony 4 : Controller requires that you provide a value for the "$id" argument

我有一个包含项目列表的页面。当您单击一个项目时,您应该会到达 "project_detail" 页面。

这是我的 MainController,其中包含通往 project_detail 的路线:

 /**
 * @Route("/project_detail/{$id}", name="project_detail")
 */
public function project_detail($id)
{
    $current_project = $this->getDoctrine()
        ->getRepository(Project::class)
        ->find($id);

    return $this->render('main/project_detail.html.twig', [
        'current_project' => $current_project,
    ]);
}

这是我的模板 project_list,link 到 "project_detail" 页面:

<a href="{{ path('project_detail', {'id':project.id }) }}">
    <div>...</div>
</a>

我通过点击得到这个link:website/project_detail/%7B%24id%7D?id=1

所以我想它明白该页面应该显示 ID 号为 1 的项目。但是,它一直显示此错误:Controller "App\Controller\MainController::project_detail()" 要求您提供一个值对于“$id”参数。

你知道我做错了什么吗?

感谢您的宝贵时间,

将您的注释更改为:

/**
 * @Route("/project_detail/{id}", name="project_detail")
 */

更改是删除 id 变量前面的 $

您传递的变量是"current_project",这意味着您需要更改:

<a href="{{ path('project_detail', {'id':project.id }) }}">
    <div>...</div>
</a>

<a href="{{ path('project_detail', {'id':current_project.id }) }}">
    <div>...</div>
</a>

还要记得解决这个问题:

/**
 * @Route("/project_detail/{$id}", name="project_detail")
 */

有了这个

/**
 * @Route("/project_detail/{id}", name="project_detail")
 */