2017-07-26 37 views
1

我试图按照本教程覆盖FOS用户捆绑[重写默认FOSUserBundle控制器]的默认控制器[1]提交symfony的寄存器控制器fosuserbundle不起作用

,我可以改变控制器,但是当我尝试提交按钮这是行不通的:

<?php 
// src/AppBundle/Controller/RegistrationController.php 

namespace AppBundle\Controller; 

use Symfony\Component\HttpFoundation\RedirectResponse; 
use FOS\UserBundle\Controller\RegistrationController as BaseController; 
use Symfony\Component\HttpFoundation\Request; 

class RegistrationController extends BaseController 
{ 
    public function registerAction(Request $request) 
    { 
     /** @var $formFactory FactoryInterface */ 
     $formFactory = $this->get('fos_user.registration.form.factory'); 
     /** @var $userManager UserManagerInterface */ 
     $userManager = $this->get('fos_user.user_manager'); 
     /** @var $dispatcher EventDispatcherInterface */ 
     $dispatcher = $this->get('event_dispatcher'); 

     $user = $userManager->createUser(); 
     $user->setEnabled(true); 

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

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

    $form = $this->createForm(RegistrationType::class, $user, [ 
    'method' => 'POST', 
]); 

    //$form = $formFactory->createForm(); 
    //$form->setData($user); 

    $form->handleRequest($request); 

    if ($form->isSubmitted()) { 
     var_dump($form); 
     if ($form->isValid()) { 
      var_dump($form); 
       } 
     } 

     return $this->render('@FOSUser/Registration/register.html.twig', array(
      'form' => $form->createView(), 
     )); 
    } 
} 

在之前的var_dump提交内部

if ($form->isSubmitted()) { 
      if ($form->isValid()) { 

工作,但后续代码var_dump不起作用。我相信提交逻辑是在另一个代码,但我不明白我可以如何改变它。

我不明白它有多可能。请帮帮我 ?

回答

0

您不会将formType设置为您的表单,所以他没有任何处理。

下面是一个简单的例子:

$form = $this->createForm(YourFormType::class, $user, [ 
     'method' => 'POST', 
]); 

祝你好运! :)

+0

谢谢你的回答......我改变了这个代码,但仍然不工作... $ form = $ this-> createForm(RegistrationType :: class,$ user,[ 'method '=>'POST', ]); // $ form = $ formFactory-> createForm(); // $ form-> setData($ user); $ form-> handleRequest($ request); if($ form-> isSubmitted()){ var_dump($ form); if($ form-> isValid()){ var_dump($ form); –

+0

好的,你可以检查请求方法吗?的var_dump($请求 - > getMethod()); – fireaxe

+0

你是对的!我不知道为什么,但是'GET'方法 –