У меня есть эти таблицы:
клиенты [идентификатор, имя, фамилия, телефон, текст, баланс, создано]
service_types [идентификатор, заголовок, цена, длина, подписка is_subscription, создана]
customer_service_types [id, customer_id, service_type_id, цена, создана]
В add.ctp
из CustomerServiceTypes У меня есть раскрывающийся список, содержащий типы услуг и поле, содержащее цену. Я хочу, чтобы пользователь выбрал тип услуги из выпадающего списка, а затем обновил поле цены price
выбранного типа услуги.
Вот существующий код:
add.ctp
<fieldset>
<legend><?= __('Add Customer Service Type') ?></legend>
<?php
echo $this->Form->control('customer_id', ['options' => $customers]);
echo $this->Form->control('service_type_id', ['options' => $serviceTypes]);
echo $this->Form->control('price');
?>
</fieldset>
<?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>
CustomerServiceTypesController.php
(добавить функцию)
public function add()
{
$customerServiceType = $this->CustomerServiceTypes->newEntity();
if ($this->request->is('post')) {
$customerServiceType = $this->CustomerServiceTypes->patchEntity($customerServiceType, $this->request->getData());
if ($this->CustomerServiceTypes->save($customerServiceType)) {
$this->Flash->success(__('The customer service type has been saved.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('The customer service type could not be saved. Please, try again.'));
}
$customers = $this->CustomerServiceTypes->Customers->find('list', ['limit' => 200]);
$serviceTypes = $this->CustomerServiceTypes->ServiceTypes->find('list', ['limit' => 200]);
$this->set(compact('customerServiceType', 'customers', 'serviceTypes'));
}
Вы можете создать функцию js, которая вызывается с помощью свойства onchange для поля выбора, а затем, как только вы получите результат, вы можете изменить значение поля ввода.
Для справки вы можете взглянуть на это Изменение значения поля ввода при выборе пользователем опции из поля выбора
Других решений пока нет …