На моей странице может быть несколько addresses
, но user
может выбрать только один address
.
У меня проблема в том, что обе мои радиокнопки сохраняются, а не одна.
Таким образом, если у пользователя 2 addresses
, тогда только у одного должен быть selected = 1
, а другой адрес должен быть selected = 0
, но на данный момент оба address = 1
.
Мне не удалось выбрать и сохранить только 1 address
как таковой в базе данных. Я знаю, что пропускаю ID
выбранной радиокнопки, но я надеялся, что это произойдет.
E.G: Когда пользователь сохраняет свой первый адрес, который затем сохраняется как его выбранный адрес (selected = 1)
, и любые другие адреса, которые он добавляет после этого, будут (selected = 0)
.
Если они передумают и захотят, чтобы их второй адрес был тем, который они используют, выберите его, и тогда он станет таким, адрес 1 (selected = 0)
и адрес 2 станут (selected = 1)
.
Надеюсь, это имело смысл. Если это не помогло, дайте мне знать.
Моя форма
@foreach($addresses as $address)
<div class="col-lg-4">
<form id="address-radio" action="{{ route('account.post.addresses.radio', $address->id) }}" method="post">
@csrf
<div class="form-check">
<input type="radio" class="form-check-input" name="address_option" id="address_{{ $address->id }}" {!! $address->selected == '1' ? 'checked' : '' !!}>
<label for="address_{{ $address->id }}" class="form-check->label">
@if(!empty($address->complex))
{{ $address->complex }} <br>
@endif
{{ $address->address }} <br>
{{ $address->suburb }} <br>
{{ $address->city }} <br>
{{ $address->province }} <br>
{{ $address->postal_code }} <br>
</label>
</div>
</form>
</div>
@endforeach
<script>
$(document).ready(function(){
$('input[type="radio"]').on('change', function(){
$(this).closest("form").submit();
})
})
</script>
и это моя функция
public function postAddressesRadio(Request $request, $id)
{
$selected = Address::findOrFail($id);
$user_id = Auth::user()->id;
$not_selected = $selected->where('id', '!=', $id)
->where('user_id', $user_id)->get();
foreach($not_selected as $selected)
{
$selected->selected = "0";
}
if($request->address_option == 'on'){
$selected->selected = '1';
}
$selected->save();
return redirect()->back()->with('success', 'Address was updated');
}