Symfony 4: Контроллер требует, чтобы вы указали значение для аргумента "$ id" - PullRequest
2 голосов
/ 19 марта 2019

У меня есть страница со списком проектов. Когда вы нажимаете на один проект, вы должны попасть на страницу "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

Итак, я полагаю, что он понимает, что на странице должен отображаться проект с номером идентификатора 1. Однако он продолжает отображать эту ошибку: Контроллер "App \ Controller \ MainController :: project_detail ()" требует, чтобы вы укажите значение для аргумента "$ id".

Ты хоть представляешь, что я делаю неправильно?

Спасибо за ваше время,

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Переменная, которую вы передаете, является "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")
 */
2 голосов
/ 19 марта 2019

Измените свою аннотацию следующим образом:

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

Изменение заключается в том, чтобы сбросить $ перед переменной id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...