如何在Laravel中提交多个表格?

我有一个简单的表单,其中包含一个按钮,用于以弹出模式打开另一个表单,该表单看起来像这样

如何在Laravel中提交多个表格?

现在您可以在上面的前提条件下输入加号按钮,当用户单击加号按钮时,它会打开包含以下形式的模态。

如何在Laravel中提交多个表格?

现在我要按照以下顺序提交表单

First submit: base form (norma way)

Second submit: form inside a pop up (via ajax)

这是我的存储功能,用于在页面控制器中提交表单

  public function store(Request $request)
    {

        $page = Page::create([
            'title' => $request->get('title'),'articles' => $request->get('articles'),'status' => $request->get('status'),]);

        // dd($request);
        $page->save();

        $bidder = Bidder::create('page_id' -> $page->id);

        // save bidders informtion to the database using ajax
        if($request->ajax())
        {
         $rules = array(
          'params_name.*'  => 'required','params_value.*'  => 'required','bidders_name.*'  => 'required',);
         $error = Validator::make($request->all(),$rules);
         if($error->fails())
         {
          return response()->json([
           'error'  => $error->errors()->all()
          ]);
         }

          $params_name = $request->params_name;
          $params_value =$request->params_value;
          $bidders_name =$request->bidders_name;

         for($count = 0; $count < count($params_name); $count++)
         {
          $data = array(
           'params_name'   => $params_name[$count],'params_value'  => $params_value[$count],'bidders_name'  => $bidders_name[$count],);
          $insert_data[] = $data; 
         }

         bidder_parameters::insert($insert_data);

         return response()->json([
          'success'  => 'Data Added successfully.'
         ]);
        }
        return redirect("/pages")->with("sucess","data saved");
    }

这是在弹出窗口中提交表单的Ajax

  $("#paramsForms").on('submit',function(e) {
    e.preventDefault();

    $.ajax({
        url: '/pages',type: "POST",data: $(this).serialize(),dataType: 'json',beforeSend:function() {
            $("#save").attr('disabled','disabled');
        },success:function (data) {
            console.log(data);
            alert('Data successfull saved');
        },error:function (error) {
            console.log(error)
          console.log('Data not saved');
        }
    })   
})

现在,当我单击“提交”时,出现以下错误

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'title' cannot be null (SQL: insert into `pages` (`title`,`articles`,`status`,`updated_at`,`created_at`) values (?,?,2019-11-06 11:29:31,2019-11-06 11:29:31))"

注意:在存储函数中检查dd($ request)是否存在两种形式,我得到以下

+request: ParameterBag {#44
    #parameters: array:4 [
      "_token" => "Wgozk9jnyUnJkL35vPhso9sUr7lbMD8cSgMVuN2s"
      "bidders_name" => array:1 [
        0 => "Biden"
      ]
      "params_name" => array:1 [
        0 => "democratic"
      ]
      "params_value" => array:1 [
        0 => "10"
      ]
    ]
  }

注意:问题是,当我单击“弹出模式”上的“提交”时,它会尝试首先发送基本表单

我需要更改以获得我想要的东西吗?

xuanxixuan 回答:如何在Laravel中提交多个表格?

注意:问题是,当我单击流行模式上的提交时,它会尝试首先发送基本表单

这意味着laravel将您的两个表单都视为一个表单,当您尝试提交弹出表单时,它会提交基本表单。请确保两个表格都分开。 您可能没有关闭表单标签之一,而弹出表单的“保存更改”按钮充当了基本表单提交按钮。

本文链接:https://www.f2er.com/3152501.html

大家都在问