2017-12-19 5 views
-1

Ich versuche, die Benutzerrollen von einem bestimmten Benutzer über ein Symfony-Formular zu bearbeiten.Symfony bearbeiten Rollen von Benutzer gibt Fehler

Mein Formular enthält diese:

->add('role', ChoiceType::class, [ 
       'expanded' => true, 
       'required' => false, 
       'multiple' => true, 
       'choices' => [ 
        'ROLE_SUPER_ADMIN' => 'ROLE_SUPER_ADMIN', 
        'ROLE_TEST' => 'ROLE_TEST', 
        'ROLE_USER' => 'ROLE_USER' 
       ], 
      ]); 

Dies ist meine Methode, die die Form

public function editUserAction(User $user, Request $request) 
    { 

     $userForm = $this->createForm(UserForm::class, $user); 
     $userForm->handleRequest($request); 

     if ($userForm->isSubmitted() && $userForm->isValid()) { 
      $this->userService->save($user); 

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

     return $this->render(
      'userEdit.html.twig', 
      [ 
       'form' => $userForm->createView(), 
      ] 
     ); 
    } 

Griffe Verfahren spart im Handler nur die Daten in die Datenbank persistierenden.

Der Fehler, die ich bekomme, wenn ich mehrere Rollen wählen versuchen, ist dies:

Erwartetes Argument vom Typ "Lehre \ Common \ Collections \ Arraycollection", "Array" gegeben

+4

Können Sie Ihre Benutzerklasse veröffentlichen? Was steckt hinter $ this-> userService? – Chris

+0

Wo genau erscheint Ihr Fehler? Poststacktrace. – svgrafov

Antwort

1

verwenden Sie by_reference Option: http://symfony.com/doc/current/reference/forms/types/choice.html#by-reference

->add('role', ChoiceType::class, [ 
      'expanded' => true, 
      'required' => false, 
      'multiple' => true, 
      'choices' => [ 
       'ROLE_SUPER_ADMIN' => 'ROLE_SUPER_ADMIN', 
       'ROLE_TEST' => 'ROLE_TEST', 
       'ROLE_USER' => 'ROLE_USER' 
      ], 
      'by_reference' => false 
     ]); 

überprüfen Sie, ob Sie die addRole und removeRole haben auf die Benutzerklasse.

Verwandte Themen