2016-04-02 4 views
4

Ich habe ein Problem mit meiner Registrierungsfunktion, seit ich auf Symfony 3.0 aktualisiert habe.Fehler: Objekt des Typs Symfony Component HttpFoundation kann nicht als Array-Upgrade auf Symfony 3.0 verwendet werden

Error: Cannot use object of type Symfony\Component\HttpFoundation\Request as array

Hier ist meine Funktion:

public function registerAction(Request $request) { 
    /** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */ 
    $userManager = $this->container->get('fos_user.user_manager'); 
    /** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */ 
    $dispatcher = $this->container->get('event_dispatcher'); 

    $user = new Admin(); 
    $user->setEnabled(true); 

    $event = new GetResponseUserEvent($user, $request); 
    $dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event); 

    if (null !== $event->getResponse()) { 
     return $event->getResponse(); 
    } 

    $form = $this->createForm(RegistrationAdminFormType::class); 
    $form->setData($user); 

    if ('POST' === $request->getMethod()) { 
     $form->submit($request); 

     if ($form->isValid()) { 

      // Attribution du username 
      $username = $this->getDoctrine()->getManager()->getRepository('PACESUserBundle:Admin')->getNewUsername(); 
      $user->setUsername($username); 

      $user->setNom(ucfirst(strtolower($form->get('nom')->getData()))); 
      $user->setPrenom(ucfirst(strtolower($form->get('prenom')->getData()))); 

      $event = new FormEvent($form, $request); 
      $dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event); 

      $userManager->updateUser($user); 
      if (null === $response = $event->getResponse()) { 
       $url = $this->container->get('router')->generate('fos_user_registration_confirmed'); 
       $response = new RedirectResponse($url); 
      } 

      $dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response)); 

      return $response; 
     } 
    } 

    return $this->render('PACESUserBundle:Registration:admin.html.twig', array(
     'form' => $form->createView(), 
    )); 
} 

Dieser Fehler aus dieser Datei kommt: vendor \ symfony \ symfony \ src \ Symfony \ Component \ Formular \ Extension \ CSRF \ Eventlistener \ CsrfValidationListener.php in Zeile 92

Ich habe nichts gefunden, das nach diesem Fehler sucht, außer dem gleichen Fehler, aber mit Zeile 67, die bereits gelöst wurde.

Antwort

6

Verwenden

$form->handleRequest($request); 

statt

$form->submit($request); 

Oder

$form->submit($request->request->all()); 
+0

Es funktioniert. Vielen Dank ! Können Sie mir bitte erklären, warum ich diesen Fehler hatte? –

+0

Senden Methode akzeptieren Plain Array Daten http://api.symfony.com/3.0/Symfony/Component/Form/Form.html#method_submit –

+0

Bitte @Arthur Vesker lesen Sie die [Upgrade-Dateien] (https://github.com /symfony/symfony/blob/2.8/UPGRADE-3.0.md#form) – Heah

Verwandte Themen