Есть таблица laboratory
(id, laboratory_name). Есть таблица prefix
(id, prefix). Есть таблица laboratory_prefix
(id, laboratory_id, prefix_id) - в ней описываются все сочетания значений двух предыдущих таблиц. И есть таблица samples
(id, laboratory_prefix_id и др.), в которой записан выбор сочетания лаборатории и префикса.
Пытаюсь сделать форму, в которой можно было бы выбрать в выпадающем списке лабораторию. Потом для этой лаборатории допустимый префикс. А при сабмите как-то записать laboratory_prefix_id в таблицу samples.
Что есть - есть 4 модели под все таблицы. Класс с методом, который создаём объект модели Sample
и отдаём виду, где я и пытаюсь создать форму. Можно, конечно, нагородить кучу js и т.п., но как-то же это можно сделать и аккуратно? Подскажите, пожалуйста, как быть? Получается, что нужно в вид (или создавать в виде) три модели? - одну для того, чтобы создать поля модели Sample
; вторую, чтобы вывести выпадающий список данных из таблицы laboratory
и создать выпадающий список этот на основе модели Laboratory
. Ну и третью также, соответственно?
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($sampleModel, 'id')->input('hidden', ['placeholder' => $sampleModel->getAttributeLabel('id'), 'readonly' => 'readonly', 'id' => 'sample_id'])->label(false) ?>
<?php
$laboratoryModel=new \app\models\Laboratory();
$authors = $laboratoryModel->find()->asArray()->all();
$items = ArrayHelper::map($authors,'id','laboratory_name');
$params = [
'prompt' => 'Выберите лабораторию'
];
echo $form->field($laboratoryModel, 'id')->dropDownList($items,$params);
$prefixModel=new \app\models\Prefix();
$params = [
'prompt' => 'Выберите префикс'
];
echo $form->field($prefixModel, 'id')->dropDownList([], $params);
?>
...
А потом вещать аякс, получать после выбора лаборатории в списке? запрашивать его данные, выводить. Потом на сервере принимать, искать вручную laboratory_prefix_id
на основе полученных из формы prefix_id
и laboratory_id
? Так, получается???
Или забить к черту на вывод формы из трёх моделей и в виде сделать её по-старинке. А на стороне экшена принимать данные и вручную их разносить потом по моделям?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
здравствуйте, вообщем есть функция сохранения jpg картинок
Есть бот, который обрабатывает запрос Location от пользователяВ случае, если на сервер приходит сообщение такого типа, бот может вернуть расстояние...
помогите составить запрос которым можно определить на каком месте определенная новость, те
Чем оправдано использование ActiveForm в случае создания сложных форм, которые состоят из полей множества моделей? И какие есть альтернативы,...