提交symfony寄存器控制器fosuserbundle不起作用

时间:2017-07-26 08:02:40

标签: symfony controller fosuserbundle

我尝试按照本教程覆盖fos用户包的默认控制器[覆盖默认FOSUserBundle控制器] [1]

我可以更改控制器但是当我尝试提交按钮时它不起作用:

<?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,但

中的var_dump
if ($form->isSubmitted()) {
            if ($form->isValid()) {

不起作用。我相信提交逻辑在另一个代码中,但我不知道如何改变它。

我不明白它是如何可能的。请帮帮我?

1 个答案:

答案 0 :(得分:0)

您没有为表单设置formType,因此他无需处理。

这是一个简单的例子:

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