У меня есть динамическая форма c, в которой есть несколько полей, таких как текстовые поля, выпадающие списки, и при изменении любого из этих полей мне необходимо выполнить некоторые вычисления в бэкэнде и обновить вычисленные значения в веб-интерфейсе.
Если я использую обычные PHP и javascript, тогда мне придется каждый раз вручную ajax запрашивать и обновлять DOM с утомительными данными.
Мой блейд-код выглядит следующим образом
<tr>
<select wire:model="room_type" class="form-control input-sm">
<option value="0">Select</option>
@foreach($room_types as $type)
<option value="{{$type->id}}">{{$type->room_type}}</option>
@endforeach
</select>
<input type="number" min="1" value="1" wire:model="room_qty" class="form-control input-sm">
<select name="mealPlan[]" wire:model="meal_plan" class="form-control input-sm">
<option value="0">Select</option>
@foreach($meal_plans as $meal)
<option value="{{$meal->id}}">{{$meal->meal_plan}}</option>
@endforeach
</select>
<select name="adult_count[]" class="form-control input-sm" wire:model="adult" >
<option value="1">1</option>
<option value="1">2</option>
<option value="1">3</option>
</select>
<select name="child_count[]" class="form-control input-sm" wire:model="child" >
<option value="1">1</option>
<option value="1">2</option>
<option value="1">3</option>
</select>
<select name="infant_count[]" class="form-control input-sm" wire:model="infant" >
<option value="1">1</option>
<option value="1">2</option>
<option value="1">3</option>
</select>
</tr>
Код компонента, как показано ниже
class BookingForm extends Component {
public $room_types = [];
public $meal_plan, $adult, $child, $infant;
public $room_row_count = 1;
public $net_total = 0.00;
public $discount = 0.00;
public $total_tax = 0.00;
public $gross_total = 0.00;
public function addRoomRow()
{
$this->room_row_count++;
}
public function removeRoomRow()
{
$this->room_row_count--;
}
public function calculate(Request $request) {
}
public function submit($formData) {
}
public function render()
{
$meal_plans = MealPlan::all();
$room_types = RoomType::all();
return view('reservations.booking-form', [
'room_types' => $room_types,
'meal_plans' => $meal_plans
]);
}
Считайте, что это страница бронирования отеля backoffice, на которой персонал отеля хочет отправить клиенту предложение на несколько номеров с датой будущей регистрации заезда и отъезда, взрослый, количество детей зависит от наличия номеров на эти будущие даты. В настоящее время существуют номера различных типов, такие как тип A, тип B и т. Д., И эти номера имеют разные цены на разные даты, которые должны быть рассчитаны в бэкэнде вместе с налогом. Количество комнат вместе с типом комнаты может быть выбрано в форме, и результаты расчета должны быть отражены на странице одновременно.
Моя страница имеет эту форму с левой стороны, и справа отображается налоговые и другие расчеты, как только я выберу тип комнаты, количество комнат, количество взрослых или даты заезда. Я не уверен, должен ли я отправлять полные данные формы компоненту при изменении какого-либо поля и как этого достичь, или я должен отправить только измененное поле и выполнить вычисления. Основная задача - показать правильные расчеты и доступность на основе данных в базе данных на данный момент. Любая помощь будет оценена. Спасибо.