为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
蝴蝶不菲 2021-12-03 15:39:33
我正在尝试以模式注册新用户,但我无法成功。在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 modalfunction 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(),));}用户类型.phpclass UserType extends AbstractType{    /**     * @param FormBuilderInterface $builder     * @param array $options     */    public function buildForm(FormBuilderInterface $builder, array $options)    {        $builder            ->add('username')            ->add('password');    }}如果我尝试在 /home 路由中通过模态创建新用户,但在 /new 路由中(没有模态),一切正常,新用户记录在数据库中。
查看完整描述

2 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

要调用模态,您必须在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">

  <img class="" src="{{ asset('images/add_button.svg') }}">

</button>

您必须在表单提交上执行 AJAX 调用,如下所示:


$('#form').submit(function(e) {

    e.preventDefault();

    var url = "{{ path('new') }}";

    var serialized = $(this).serialize(); // Set ``data:{}``:

    $.post(url, serialized, function(response) {

        //your callback here

        console.log(response);

    }, 'JSON');

});

此致,


查看完整回答
反对 回复 2021-12-03
?
富国沪深

TA贡献1790条经验 获得超9个赞

我发现我的问题很容易解决。只需在user/new.html.twig 中更改这一行:

<form method="post">

对此:

<form method="post" action="{{ path('new') }}" >


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 204 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信