Я застрял в небольшой проблеме, где не могу понять, как обрабатывать несколько клонированных полей ввода в одном запросе 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, где каждый отдельный вход будет представлять различный продукт. Надеюсь, я достаточно четко описал свою проблему. Если вам нужны какие-либо подробности, пожалуйста, дайте мне знать. Заранее спасибо.