我有一个表单来更新单个用户,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')
]
);
}
告诉我是否需要添加一些信息
答案 0 :(得分:0)
您必须在
之间的某处重新初始化您的表单$form->handleRequest($this->get('request'));
和
$form->createView()
因为就像你拥有它一样,即使表单无效,也会使用无效的请求数据呈现返回的视图。