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

时间:2019-03-19 14:18:17

标签: symfony4

我有一个包含项目列表的页面。当您单击一个项目时,您应该到达“ 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”参数提供一个值。

您是否知道我在做什么错?

感谢您的时间,

2 个答案:

答案 0 :(得分:2)

将注释更改为此:

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

更改是将$放在id变量前面。

答案 1 :(得分:2)

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