首页 > 解决方案 > Symfony 4:控制器要求您为“$id”参数提供一个值

问题描述

我有一个包含项目列表的页面。当您单击一个项目时,您应该会到达“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,带有“project_detail”页面的链接:

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

我通过点击获得此链接:website/project_detail/%7B%24id%7D? id=1

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

你知道我做错了什么吗?

感谢您的时间,

标签: symfony4

解决方案


您传递的变量是“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")
 */

推荐阅读