Как отправить несколько форм в Laravel? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть простая форма, которая содержит кнопку, чтобы открыть другую форму во всплывающем модале, форма выглядит следующим образом

enter image description here

Теперь какВы можете видеть выше кнопку ввода плюса prebids, когда пользователь нажимает кнопку плюса, он открывает модал, который содержит такую ​​форму, как показано ниже.

enter image description here

СейчасЯ хочу отправить формы в следующем порядке

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"
      ]
    ]
  }

Примечание. Проблема в том, что когда я нажимаю кнопку «Отправить» в модальном режиме, сначала он пытается отправить базовую форму

Что мне нужно изменить, чтобы получить то, что я хочу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...