首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过Ajax发布对象,并通过实体管理器将int存储到数据库中?

如何通过Ajax发布对象,并通过实体管理器将int存储到数据库中?
EN

Stack Overflow用户
提问于 2018-08-14 04:44:51
回答 1查看 69关注 0票数 0
代码语言:javascript
复制
$('#form_save').on( 'click', function (e) {
      e.preventDefault();
      var form = $(this).closest('form');
      var formData = form.serializeArray();

      alert(formData.toSource());
      $.ajax({
        method:'POST',
        url:'{{ path('edit_form', { 'slug': page.slug }) }}',
        data: formData,
        success: function(data){

          alert("success");
        }
      });
    });

var formData给出了以下警报输出:

代码语言:javascript
复制
[{name:"form[username]", value:"1"}, {name:"form[email]", value:"1@12.sw"}, {name:"form[is_active]", value:"1"}, {name:"form[plainPassword][first]", value:""}, {name:"form[plainPassword][second]", value:""}, {name:"form[_token]", value:"MdSCmPgzZC3pZaW2wK2Rk"}]

我现在如何在我的控制器中使用它来将它存储到数据库中:

代码语言:javascript
复制
public function form($slug, Request $request){

    $id = $request->request->get('id');

    $item = new User();
    $item= $this->getDoctrine()->getRepository(User::class)->find($id);

    if($request->request->get('data')){

         $data = $request->request->get('data');
         $entityManager = $this->getDoctrine()->getManager();
         $entityManager->flush();
       }
    }

我得到了错误消息:

代码语言:javascript
复制
The identifier id is missing for a query of App\Entity\User
EN

回答 1

Stack Overflow用户

发布于 2018-08-14 05:55:46

仅使用函数serializeArray来实现此目的是非常无用的。为了让它工作,你的控制器应该知道你正在传输数据的格式,并且在默认情况下,Symfony的控制器根本不需要这种格式。

最好的方法是以key:value格式而不是{name: key, value: value}格式序列化数据。

对于转换数据,我不会重复社区拥有的答案:Convert form data to JavaScript object with jQuery

一旦你有了key:value格式的数据,我想,你就可以改变你的控制器了。例如:

代码语言:javascript
复制
$data = json_decode($request->getContent(), true);

var_dump($data['form[email]']);

上面的代码应该会输出1@12.sw。这有点笨拙,但它应该可以工作。在我看来,你真的应该使用Symfony表单组件,将数据submit()到其中,并正常使用它。form[_token]字段表明这个表单的超文本标记语言实际上是由Symfony Form组件生成的,所以我看不出在这里不使用它的原因……

希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51830288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档