【问题标题】:undefined index 'user' when deleting删除时未定义的索引“用户”
【发布时间】:2019-09-08 16:24:08
【问题描述】:

使用 symfony 4.2.4,这是我的方法:

/**
     * @Route("/users/{id}/delete", name="delete_user", methods={"GET"})
     */
    public function delete($id)
    {
        $this->denyAccessUnlessGranted('ROLE_ADMIN');

        $entityManager = $this->getDoctrine()->getManager();
        $user = $entityManager->getRepository(User::class)
            ->find($id);

        $entityManager->remove($user);
        $entityManager->flush();

        $this->addFlash('success', 'User successfully removed!');

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

在刷新命令上我得到“未定义的索引:用户”,但在其他实体(不是用户)上使用相同的方法就像一个魅力。我不明白这里的意思,有什么提示吗?

非常感谢

【问题讨论】:

  • 你能告诉我们你的用户实体吗?以及整个错误消息?
  • 虽然我要说的不能解决问题(因为它的代码有效),我建议你直接将用户对象传递给删除方法,让参数转换器查询用户对象。这将在这里和那里为您节省几行代码! public function delete(User $user) 然后你可以直接remove($user) & flush()。 (symfony.com/doc/master/best_practices/…)
  • 错误是 undefined index: users => users 。这似乎与删除操作无关,您可能尝试访问模板中的users 变量或类似的东西。
  • 这是我的用户实体:codeshare.io/GbyXZV 谢谢
  • 检查重复的 URL 或尝试清除缓存

标签: symfony entity


【解决方案1】:

看来您的代码完全正确。我相信刷新对象时不应该出现错误。 Symfony Documement

【讨论】:

    【解决方案2】:

    我不推荐使用方法“GET”来删除“用户”。您可以尝试使用此代码:

        /**
     * @Route("/{id}", name="users_delete", methods="DELETE")
     */
    public function delete(Request $request, $id): Response
    {
        $idUser = $this->UsersRepository->findOneById($id);
        if ($this->isCsrfTokenValid('delete'.$idUser->getId(), $request->request->get('_token'))) {
            $em = $this->getDoctrine()->getManager();
            $em->remove($idUser);
            $em->flush();
        }
        return $this->redirectToRoute('users_index');
    }
    

    【讨论】:

      猜你喜欢
      • 2013-07-13
      • 2014-11-23
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      相关资源
      最近更新 更多