Symfony 4:Controller要求您为“$ id”参数提供值

问题描述 投票:2回答:2

我有一个包含项目列表的页面。当您单击一个项目时,您应该到达“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
2个回答
2
投票

将注释更改为:

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

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


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")
 */
© www.soinside.com 2019 - 2024. All rights reserved.