【问题标题】:Symfony2 - update entity with form errorsSymfony2 - 使用表单错误更新实体
【发布时间】:2014-03-25 10:44:03
【问题描述】:

我有一个更新单个用户的表单,ID 是在 url 中传递的。我已登录,并且有一个列出注册用户的菜单(带有属性用户名)。 此属性不应为空,但是当我更新实体并将用户名字段留空时,它会在我的菜单中更新,但我不知道为什么。我有消息告诉用户名字段不应留空,$form->isValid() 返回 false。

谁能告诉我一些关于这个的事情?以及如何解决问题? (或者至少给我一些建议)

这是我的控制器的代码:

public function editAction($id)
{
    $em = $this->getDoctrine()->getManager();
    $user = $em->getRepository('TasksUserBundle:User')
        ->findWithTasks($id);
    if (!$user) {
        throw $this->createNotFoundException('Cet utilisateur n\'extiste pas');
    }

    $form = $this->createForm(new UserType(), $user);
    $form->handleRequest($this->get('request'));
    if ($form->isValid()) {
        $em->flush();

        $this->get('session')->getFlashBag()->add('success', 'Vos données ont été enregistrées');
        return $this->redirect($this->generateUrl('tasks_user_view', ['id' => $id]));
    }

    return $this->render(
        'TasksUserBundle:User:view.html.twig', [
            'form' => $form->createView(),
            'user' => $user
        ]
    );
}

控制器用于在我的菜单中检索我的用户列表:

public function userMenuAction()
{
    $users = $this->getDoctrine()
        ->getRepository('TasksUserBundle:User')
        ->findAll();
    return $this->render(
        'TasksUserBundle:User:menu.html.twig', [
            'users' => $users,
            'route' => $this->get('request')->get('route'),
            'user_id' => $this->get('request')->get('id')
        ]
    );
}

如果我需要添加一些信息,请告诉我

【问题讨论】:

    标签: symfony entity


    【解决方案1】:

    你必须重新初始化你的表单

    $form->handleRequest($this->get('request'));
    

    $form->createView()
    

    因为和你一样,即使表单无效,返回的视图也会使用无效的请求数据呈现。

    【讨论】:

    • 是的,可以清楚地看到用户的错误在哪里。但我真正的问题是为什么在我编辑该用户时我的菜单中的用户名会发生变化(表单有错误)并且 ORM 没有刷新任何内容?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多