Exebeche
@Exebeche
Осваиваю программирование

Yii2 как создать форму с удалением/добавлением полей через админку?

Прошу помощи у знатоков. Возникла необходимость создания формы анкеты для сайта на Yii2 с различными типами полей. Изначально имеется определеное количество полей, но нужен функционал удаления/добавления полей данной анкеты.

Сосем запутался т.к. поля могут быть и селектами с кучей вариантов, обязтельными + некоторые нужно валидировать по типу и/или количеству символов...

Есть идея создать таблицы: questionary с полями - id, name, type, sort, required; questionary_item с полями - id, q_id, value(для полей ввода null, а для селектов - строка значения), sort(для позиции в списке вариантов селекта).

Но, как реализовать логику и верстку? Как в модели должны быть описаны правила для создаваемых полей?

Помогите, пожалуйста, понять концепцию данной конструкции. Желательно как пищу для размышлений с минимумом написанного вами кода - только для самых заковыристых мест.
  • Вопрос задан
  • 847 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
Структура базы:
1. Таблица questionary насколько я понимаю хранит вопросы а данные анкеты, поэтому ее лучше переименовать, например в questions. По структуре таблицы - все норм
2. Таблица questionary_item - опять таки что у Вас в ней храниться? Варианты ответа на вопрос. По этому ее опять таки лучше переименовать например в answers_variants. По структуре этой таблицы так же все нормально, но не надо в ней хранить null для полей ввода... У Вас эта таблица должна хранить ТОЛЬКО варианты ответов, если вопрос не подразумевает возможности выбора из вариантов - тогда не надо хранить никаких NULL

Логика и валидации: Есть такая штука как динамическая модель, она позволяет формировать ее структуру в процессе выполнения приложения. Разберитесь с ней и вопрос как организовать логику и валидацию отпадет

Верстка: ну тут все просто нужно использовать стандартный ActiveForm и формировать его поле с помощью цикла по атрибутам динамической модели
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы