2014-03-25 68 views
0

我有一個表單來更新單個用戶,ID在URL中傳遞。我登錄後,我有一個菜單列出了註冊用戶(使用用戶名)。 此屬性不應該爲空,但當我更新實體並將用戶名字段留空時,它將在我的菜單中更新,但我不明白爲什麼。我有消息告訴用戶名字段不能留空,$form->isValid()返回false。Symfony2 - 具有表單錯誤的更新實體

有人可以告訴我關於這方面的一些情況嗎?以及如何解決這個問題? (或者至少給我一些建議)

這裏是我的控制器代碼:

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

您必須重新初始化表格之間的某個地方

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

$form->createView() 

因爲喜歡你擁有它,即使該形式是無效的,返回的視圖中使用無效的請求的數據呈現。

+0

是的,以清楚地看到用戶在哪裏出錯。但我真正的問題是爲什麼當我編輯該用戶時(在表單中出現錯誤)我的菜單中的用戶名發生更改並且ORM沒有任何內容被刷新? – Flohw