Обработка нескольких клонированных входов в запросе - PullRequest
0 голосов
/ 15 октября 2019

Я застрял в небольшой проблеме, где не могу понять, как обрабатывать несколько клонированных полей ввода в одном запросе Laravel. В форме у меня есть кнопка, чтобы клонировать некоторые входные данные, используя jQuery. Пока мой HTML-макет выглядит следующим образом:

<div id="c1">
    <div class="form-group row">
        <label class="col-xl-3 col-lg-3 col-form-label">Product label & price</label>
        <div class="col-lg-3 col-xl-3">
            <div class="input-group">
                {!! Form::text('product_lable[]', null,  ['class' => 'form-control', 'aria-describedby', 'basic-addon1']) !!}
            </div>
        </div>
        <div class="col-lg-3 col-xl-3">
            <div class="input-group">
                {!! Form::number('product_price[]', null,  ['class' => 'form-control', 'aria-describedby', 'basic-addon1']) !!}
            </div>
        </div>
    </div>
    <div class="form-group row">
        <label class="col-xl-3 col-lg-3 col-form-label">Licence label & price</label>
        <div class="col-lg-3 col-xl-3">
            <div class="input-group">
                {!! Form::text('licence_lable[]', null,  ['class' => 'form-control', 'aria-describedby', 'basic-addon1']) !!}
            </div>
        </div>
        <div class="col-lg-3 col-xl-3">
            <div class="input-group">
                {!! Form::number('licence_price[]', null,  ['class' => 'form-control', 'aria-describedby', 'basic-addon1']) !!}
            </div>
        </div>
    </div>
    <div class="form-group row">
        <label class="col-xl-3 col-lg-3 col-form-label">Licence duration & commission</label>
        <div class="col-lg-3 col-xl-3">
            <div class="input-group">
                {!! Form::text('licence_duration[]', null,  ['class' => 'form-control', 'aria-describedby', 'basic-addon1']) !!}
            </div>
        </div>
        <div class="col-lg-3 col-xl-3">
            <div class="input-group">
                {!! Form::number('licence_commission[]', null,  ['class' => 'form-control', 'aria-describedby', 'basic-addon1']) !!}
            </div>
        </div>
    </div>
    <hr>
</div>
<div id="c1_final"></div>
<div class="form-group row">
    <a href="#" class="add-clone" data-id="c1" data-to="c1_final">Add</a>
</div>

Чтобы клонировать и добавить новые поля ввода в той же форме, я использую следующий jQuery:

$(document).on('click','a.add-clone',function(e){
        e.preventDefault();
        let _id = $(this).data('id');
        let _to = $(this).data('to');
        let _el = $('#'+_id).clone(true);
        _el.appendTo('#'+_to);
    });

Пока что этоработает как задумано. Но я сталкиваюсь с проблемой, когда пользователь добавляет, скажем, 3 новых поля ввода. Когда форма отправлена, я получаю следующий ответ на мой запрос:

  "product_lable" => array:3 [▼
    0 => "Product 1"
    1 => "Product 2"
    2 => "Product 3"
  ]
  "product_price" => array:3 [▼
    0 => "1"
    1 => "2"
    2 => "2321"
  ]
  "licence_lable" => array:3 [▼
    0 => "Licence 1"
    1 => "Licence 2"
    2 => "Licence 3"
  ]
  "licence_price" => array:3 [▼
    0 => "2"
    1 => "211"
    2 => "21312"
  ]
  "licence_duration" => array:3 [▼
    0 => "150"
    1 => "151"
    2 => "555"
  ]
  "licence_commission" => array:3 [▼
    0 => "1"
    1 => "222"
    2 => "222"
  ]

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

  "product1" => array:3 [▼
    'product_lable' => "Product 1"
    'product_price' => 150
  ]
"product2" => array:3 [▼
    'product_lable' => "Product 1"
    'product_price' => 150
  ]
"product3" => array:3 [▼
    'product_lable' => "Product 1"
    'product_price' => 150
  ]
"licence1" => array:3 [▼
    'licence_label' => "Label 1"
    'licence_price' => "2"
    'licence_duration' => "2321"
    'licence_commission' => "2321"
  ]
"licence2" => array:3 [▼
    'licence_label' => "Label 2"
    'licence_price' => "2"
    'licence_duration' => "2321"
    'licence_commission' => "2321"
  ]
"licence3" => array:3 [▼
    'licence_label' => "Label 3"
    'licence_price' => "2"
    'licence_duration' => "2321"
    'licence_commission' => "2321"
  ]

Итак, в общем, я хочу массив key => value, где каждый отдельный вход будет представлять различный продукт. Надеюсь, я достаточно четко описал свою проблему. Если вам нужны какие-либо подробности, пожалуйста, дайте мне знать. Заранее спасибо.

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