как я могу обновить данные из формы Dynami c, используя данные Dynami c? Я попытался сначала удалить все данные с идентификатором из таблицы, а затем вставить данные, как при создании, но он всегда зависал на 1 строке из динамической c формы.
Like: Name | Страница | Действие Test1 | 22 | Добавить еще Test2 | 24 | Удалить Test3 | 23 | Удалить
Когда я сохраняю его, он сохраняет только строку с «Test1».
Обновление контроллера:
public function update(Request $request, Vote $vote)
{
$request->validate([
'item.*.name' => 'required|string|max:191',
'item.*.page' => 'nullable|string',
]);
if(!$vote->vote_options->isEmpty()) {
VoteOption::where('vote_id', $vote->id)->delete();
//$vote->vote_options()->delete();
}
foreach($request->item as $key => $value) {
$vote->vote_options()->create($value);
return redirect()->route('admin.votes.view');
}
return redirect()->route('admin.votes.options.edit', $vote->id);
}
// Редактирование
<tbody>
@forelse ($vote_options as $option)
<tr>
<td><input type="text" name="item[{{ $loop->index }}][name]" placeholder="Zde napiš jméno kandidáta" class="form-control form-control-alternative" value="{{ $option->name }}" /></td>
<td><input type="text" name="item[{{ $loop->index }}][page]" placeholder="Zde napiš jméno strany" class="form-control form-control-alternative" value="{{ $option->page }}" /></td>
@if ($loop->first)
<td><button type="button" name="addItem" id="addItem" class="btn btn-success">Přidal další</button></td>
<td style="display: none;" id="voteCount" data-count="{{ $loop->count }}"></td>
@else
<td><button type="button" class="btn btn-danger removeItem">Smazat</button></td>
@endif
</tr>
@empty
<tr>
<td><input type="text" name="item[0][name]" placeholder="Zde napiš jméno kandidáta" class="form-control form-control-alternative" /></td>
<td><input type="text" name="item[0][page]" placeholder="Zde napiš jméno strany" class="form-control form-control-alternative" /></td>
<td><button type="button" name="addItem" id="addItem" class="btn btn-success">Přidal další</button></td>
<td style="display: none;" id="voteCount" data-count="1"></td>
</tr>
@endforelse
</tbody>
JS:
let items = $('#voteCount').data('count') - 1;
$("#addItem").click(function() {
++items;
$("#optionsTable").append('<tr><td><input type="text" name="item[' + items + '][name]" placeholder="Zde napiš jméno kandidáta" class="form-control form-control-alternative" /></td><td><input type="text" name="item[' + items + '][page]" placeholder="Zde napiš jméno strany" class="form-control form-control-alternative" /></td><td><button type="button" class="btn btn-danger removeItem">Smazat</button></td></tr>');
});
$(document).on('click', '.removeItem', function(){
$(this).parents('tr').remove();
});
Кстати. без этой строки
VoteOption::where('vote_id', $vote->id)->delete();
Работает отлично.
Спасибо за любые идеи, вероятно, так как я делаю это плохо: /