Создать форму с выпадающим списком yii2

347
20 августа 2017, 06:30

Есть таблица 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? Так, получается??? Или забить к черту на вывод формы из трёх моделей и в виде сделать её по-старинке. А на стороне экшена принимать данные и вручную их разносить потом по моделям?

READ ALSO
php проблемы с сохранением gif изображений

php проблемы с сохранением gif изображений

здравствуйте, вообщем есть функция сохранения jpg картинок

204
Обработка запроса Location в Telegram

Обработка запроса Location в Telegram

Есть бот, который обрабатывает запрос Location от пользователяВ случае, если на сервер приходит сообщение такого типа, бот может вернуть расстояние...

263
запрос mysql на php

запрос mysql на php

помогите составить запрос которым можно определить на каком месте определенная новость, те

210
Чем оправдано использование ActiveForm?

Чем оправдано использование ActiveForm?

Чем оправдано использование ActiveForm в случае создания сложных форм, которые состоят из полей множества моделей? И какие есть альтернативы,...

140