CakePHP 3.6.11: Обновление базы полей в раскрывающемся списке - PullRequest
0 голосов
/ 05 октября 2018

У меня есть следующие таблицы:

клиенты [идентификатор, имя, фамилия, телефон, текст, баланс, создано]

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'));
    }

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете создать функцию js, которая вызывается с помощью свойства onchange для поля выбора, а затем, как только вы получите результат, вы можете изменить значение поля ввода.

Для справки вы можете посмотретьпри этом Изменение значения поля ввода при выборе пользователем опции из поля выбора

...