@ParamConverter 注释找不到 Symfony 4.4 对象

Symfony 4.4 object not found by the @ParamConverter annotation

我知道已经有很多类似的话题了。

我尝试了什么:

还有更多对我不起作用的解决方案。

这里不是控制器的工作片段:

   /**
     * Edit action.
     *
     * @param Request                      $request         HTTP request
     * @param User                         $user            User entity
     * @param UserPasswordEncoderInterface $passwordEncoder Password encoder
     *
     * @return Response HTTP response
     *
     * @throws ORMException
     * @throws OptimisticLockException
     *
     * @Route(
     *     "/{id}/password",
     *     methods={"GET", "PUT"},
     *     requirements={"id": "[1-9]\d*"},
     *     name="app_password",
     * )
     */
    public function editPasswordUser(Request $request, User $user, UserPasswordEncoderInterface $passwordEncoder): Response
    {
        if (($this->getUser() == $user) || (is_array($this->getUser()->getRoles()) && in_array(
            'ROLE_ADMIN',
            $this->getUser()->getRoles()
        ))) {
            $role = $user->getRoles();
            $form = $this->createForm(NewPasswordType::class, $user, ['method' => 'PUT']);
            $form->handleRequest($request);

            if ($form->isSubmitted() && $form->isValid()) {
                $user->setPassword(
                    $passwordEncoder->encodePassword(
                        $user,
                        $user->getPassword()
                    )
                );
                $user->setUpdatedAt(new DateTime());
                $this->userService->save($user);

                $this->addFlash('success', 'message_updated_successfully');

                return $this->redirectToRoute('detail_show');
            }

            return $this->render(
                'security/password.html.twig',
                [
                    'form' => $form->createView(),
                    'user' => $user,
                    'role' => $role,
                ]
            );
        } else {
            return $this->redirectToRoute('detail_show');
        }
    }

Twig 文件:

{% extends 'base.html.twig' %}

{% block title %}
    {{ 'title.user_editpasswd'|trans({'%id%': user.id|default('')}) }}
{% endblock %}

{% block body %}
    <h1>{{ 'title.user_editpasswd'|trans({'%id%': user.id|default('')}) }}</h1>
    {{ form_start(form, { method: 'PUT', action: url('app_password', {id: user.id}) }) }}
    {{ form_widget(form) }}
    <div class="form-group row float-sm-right">
        <input type="submit" value="{{ 'action.save'|trans }}" class="btn btn-primary" />
    </div>
    <div>
        {% if role[0] == 'ROLE_ADMIN' %}
            <a href="{{ url('user_view', {id: user.id} ) }}" title="{{ 'action.back_to_view'|trans }}">
                {{ 'action.back_to_view'|trans  }}
            </a>
        {% endif %}
    </div>
    <div>
        {% if role[0] == 'ROLE_ADMIN' %}
            <a href="{{ url('user_index') }}" title="{{ 'action.index'|trans }}">
                {{ 'action.index'|trans  }}
            </a>
        {% endif %}
    </div>
    {{ form_end(form) }}
{% endblock %}

我的应用程序快完成了,这是我第一次也是唯一一次遇到这样的错误。

将控制器操作中的参数类型从 User 更改为 \Symfony\Component\Security\Core\User\UserInterface,一切都应该有效。当前用户通过此服务 ID 在容器中注册。