模态中的表单未将新用户数据写入数据库

我正在尝试以模式注册新用户,但我无法成功。


在home/index.html.twig我通过 AJAX 显示模式:


<div class="cell large-3 t-white bg-dark offset-2 pt-2">    

    <a onclick="createNew()"><img class="" src="{{ asset('images/add_button.svg') }}"></a>    //triggering ajax function

</div>


<div id="addUser" class="modal t-white">   //div for modal


function createNew() {

    $.ajax({

        url: "new",

        type: "POST",

        dataType: 'html',

        data: {},

        success: function (data) {

            $('#addUser').html(data);

        },

        error: function (error) {

            console.log(error);

        }

    });

    $('#addUser').css({display: 'block'});

}

用户控制器.php


/**

 * Creates a new User entity.

 *

 * @Route("/new", name="new")

 * @Method({"GET", "POST"})

 * @Template()

 */


public function new(Request $request, UserPasswordEncoderInterface $encoder)

{

    $user = new User();

    $form = $this->createForm(UserType::class, $user);

    $form->handleRequest($request);


    $em = $this->getDoctrine()->getManager();


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

        $user->setPassword($encoder->encodePassword($user, $user->getPassword()));


        $user->setRoles(["ROLE_USER"]);

        $em->persist($user);

        $em->flush();


        return $this->redirectToRoute('home', array('id' => $user->getId()));

    }

    return $this->render('user/new.html.twig',

        array('user' => $user,

              'form' => $form->createView(),));

}

用户类型.php


class UserType extends AbstractType

{

    /**

     * @param FormBuilderInterface $builder

     * @param array $options

     */

    public function buildForm(FormBuilderInterface $builder, array $options)

    {

        $builder

            ->add('username')

            ->add('password');

    }

}

如果我尝试在 /home 路由中通过模态创建新用户,但在 /new 路由中(没有模态),一切正常,新用户记录在数据库中。



蝴蝶不菲
浏览 205回答 2
2回答

翻翻过去那场雪

要调用模态,您必须在home/index.html.twig以下位置替换此代码:<a onclick="createNew()"><img class="" src="{{ asset('images/add_button.svg') }}"></a>通过这个:<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#addUser">&nbsp; <img class="" src="{{ asset('images/add_button.svg') }}"></button>您必须在表单提交上执行 AJAX 调用,如下所示:$('#form').submit(function(e) {&nbsp; &nbsp; e.preventDefault();&nbsp; &nbsp; var url = "{{ path('new') }}";&nbsp; &nbsp; var serialized = $(this).serialize(); // Set ``data:{}``:&nbsp; &nbsp; $.post(url, serialized, function(response) {&nbsp; &nbsp; &nbsp; &nbsp; //your callback here&nbsp; &nbsp; &nbsp; &nbsp; console.log(response);&nbsp; &nbsp; }, 'JSON');});此致,

富国沪深

我发现我的问题很容易解决。只需在user/new.html.twig 中更改这一行:<form&nbsp;method="post">对此:<form&nbsp;method="post"&nbsp;action="{{&nbsp;path('new')&nbsp;}}"&nbsp;>
打开App,查看更多内容
随时随地看视频慕课网APP