В форме есть выбор для клиента с заполнением из переменной в контроллере. Я могу легко получить старое входное значение, используя old ('customer_id').
Моя проблема возникает из-за второго выбора. Второй вариант выбора использует javascript для заполнения контакта с клиентом на основе того, какой клиент выбран. Когда проверка не проходит, я теряю это значение.
Вот код контроллера для метода хранения:
$rules = [
'number' => 'required',
'customer_id' => 'required',
'contact_id' => 'required',
'payment_type' => 'nullable',
'department_id' => 'required',
'requested_ship_date' => 'required|after:yesterday',
];
$customMessages = [
'number.required' => 'The Sales Order number is required.',
'customer_id.required' => 'Please choose a customer.',
'contact_id.required' => 'Please choose a contact.',
'requested_ship_date.required' => 'You must enter a ship date.',
'requested_ship_date.yesterday' => 'The requested ship date must be today or after.',
'department_id.required' => 'Please choose a department.'
];
$salesorder = \request()->validate($rules, $customMessages);
SalesOrder::create($salesorder);
return redirect('/salesorders');
Вот Customer Select:
<select
name="customer_id"
class="shadow text-sm">
@if (old('customer_id'))
<option
value>
</option>
@else
<option
selected
value>
</option>
@endif
@foreach($customers as $customer)
@if (old('customer_id'))
<option
value="{{ $customer->id }}" {{ old('customer_id') == $customer->id ? 'selected' : '' }}>
{{ ucfirst($customer->name) }}
</option>
@else
<option
value="{{ $customer->id }}">
{{ ucfirst($customer->name) }}
</option>
@endif
@endforeach
</select>
Вот выбор для контакта с клиентом:
<select
name="contact_id"
class="shadow text-sm text-center"
>
<option>
</option>
</select>
А вот javascript:
$('select[name="customer_id"]').on('change', function () {
var customerId = $(this).val();
if (customerId) {
$.ajax({
url: '/customer/contacts/get/' + customerId,
type: "GET",
dataType: "json",
beforeSend: function () {
$('#loader').css("visibility", "visible");
},
success: function (data) {
$('input[name="email"]').val('');
$('select[name="contact_id"]').empty();
$('select[name="contact_id"]').append('<option value="Choose">Choose Contact</option>');
$.each(data, function (key, value) {
$('select[name="contact_id"]').append('<option value="' + key + '">' + value + '</option>');
});
},
complete: function () {
$('#loader').css("visibility", "hidden");
}
});
} else {
$('select[name="customer_id"]').empty();
}
});