Как сохранить каждое поле формы в отдельную строку таблицы?
Имеется форма состоящая из нескольких таблиц/моделей - анкета.
Количество полей анкеты не постоянно, что не дает возможности обычного сохранения в БД. (Поля могут добавляться/удаляться + могут различаться по нескольким критериям)
Пришел к выводу, что сохранить можно в отдельную таблицу где каждая строка = поле формы.
Как можно провернуть такой трюк? Именно как сохранить каждое поле формы как отдельную запись в таблицу.
Можно на примере дефолтной формы обратной связи или любой другой (саму структуру таблицы я представляю, а вот как такое сохранение провернуть - не догоняю)
Это даст возможность создавать формы регистрации из админки для множества типов пользователей с различными полями анкеты (у одних один набор полей у других - другой), создавать новые типы профилей и т.д.
По крайней мере пытаюсь такую задачу решить, но опыта еще кот наплкал
Александр Степанов, тогда вероятно хорошей идеей будет хранить json, кокой- то билдер формирует форму, записываем ее конфиг в json. Потом на базе этого json строим форму.
есть такой модуль https://github.com/ElisDN/yii2-composite-form
В живую никогда им не пользовался, но использовал его принцип, когда Вы создаете грубо говоря форму-контейнер а в нее инжектите свои формы в зависимости от вашего сценария, в форме контейнера переопределяете два метода load и validate, в которые вы загружаете и валидируете данные внутренних форм и в контроллере после успешной валидации сохраняете ваши данные в бд
Мне не нужна мультипл...
Мне несколько таблиц создает саму форму - сам виджет формы, а сохранить мне нужно в совершенно другую таблицу в которой каждое поле формы (инпуты, селекты и пр) будут сохраняться как отдельную запись таблицы, а не колонку (id, name etc).
Если набор полей разный для записи, то поля эти можно сохранять в JSON колонку таблицы. Тем более в последних версиях Yii2 появилась поддержка этого из коробки. Другой вариант - нечто подобное EAV.
vksee, спасибо. Буду курить как это json состряпать...
Наверное с json будет оптимально и не заморочено.
А еще и видос про сохранение в json недавно смотрел, но протупил. эххх