Symfony2 - 更新具有表单错误的实体

时间:2014-03-25 10:44:04

标签: symfony entity

我有一个表单来更新单个用户,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')
        ]
    );
}

告诉我是否需要添加一些信息

1 个答案:

答案 0 :(得分:0)

您必须在

之间的某处重新初始化您的表单
$form->handleRequest($this->get('request'));

$form->createView()

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