2016-04-02 9 views
4

Symfony 3.0にアップグレードして以来、私の登録機能に問題があります。エラー:symfony 3.0へのアレイのアップグレードとしてSymfony Component HttpFoundation Requestタイプのオブジェクトを使用できません

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

ここに私の機能です:

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(), 
    )); 
} 

このエラーは、このファイルから来ている:ベンダー\ symfonyの\ symfonyの\ SRC \ symfonyの\コンポーネント\フォームラインで\拡張\ CSRF \のEventListener \ CsrfValidationListener.php 92

public function preSubmit(FormEvent $event) 
{ 
    $form = $event->getForm(); 

    if ($form->isRoot() && $form->getConfig()->getOption('compound')) { 
     $data = $event->getData(); 

     if (!isset($data[$this->fieldName]) || !$this->tokenManager->isTokenValid(new CsrfToken($this->tokenId, $data[$this->fieldName]))) { 
      $errorMessage = $this->errorMessage; 

      if (null !== $this->translator) { 
       $errorMessage = $this->translator->trans($errorMessage, array(), $this->translationDomain); 
      } 

      $form->addError(new FormError($errorMessage)); 
     } 

     if (is_array($data)) { 
      unset($data[$this->fieldName]); 
      $event->setData($data); 
     } 
    } 
} 

同じエラーを除き、すでに解決されている67行目でこのエラーを検索するものは見つかりませんでした。

答えて

6

使用

$form->handleRequest($request); 

代わり

$form->submit($request); 

それとも

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

それは働いています。ありがとうございました ! なぜこのエラーが発生したのか説明できますか? –

+0

送信メソッドはプレーンな配列データを受け入れます http://api.symfony.com/3.0/Symfony/Component/Form/Form.html#method_submit –

+0

@Arthur Veskerは[アップグレードファイル](https://github.com)を読んでください。 /symfony/symfony/blob/2.8/UPGRADE-3.0.md#form) – Heah

関連する問題