2014-09-23 4 views
0

Я хочу создать пакет в приложении, где пользователь имеет возможность создавать формы.Создатель динамической формы Symfony2

Эти формы будут анкетами с различными ответами. Знаете ли вы, существует ли уже подобный пакет?

Если этого не происходит. Как мне продолжить? Я всегда создаю формы только в таких файлах, как «Form \ Type \ UserType».

В этом случае нужно было бы генерировать динамически из базы данных, верно? Только я пропустил этот подход, может ли кто-нибудь дать понять, как я могу это понять?

Update:

Может быть, я думаю, что к сложному. Я не уверен, что служба формы решит мою проблему. Знайте, что я создал структуру базы данных, чтобы описать мою первоначальную ситуацию.

Пользователь может создать на бэкэнде следующие записи.

  • шкала, шкала может содержать множество ответов (да, нет, может быть, хорошо, лучше ...)
  • Категория вопрос
  • вопрос, могут быть отнесены ко многим категориям и многие questionnairies
  • Анкета может содержать много вопросов, и здесь пользователь может задать масштаб вопроса.

Таблица Масштабные

+----+--------+------------+----------+-----------+------------+ | id | name | alignment | isActive | isDeleted | createDate | +----+--------+------------+----------+-----------+------------+ | 1 | Yes-No | horizontal | 1 | 1 | 2014-09-25 | +----+--------+------------+----------+-----------+------------+

Таблица Items

+----+------+-------+------------+ | id | name | value | createDate | +----+------+-------+------------+ | 1 | Yes | 1 | 2014-09-25 | | 2 | No | 0 | 2014-09-25 | +----+------+-------+------------+

ManyToMany 'scale_items'

категории

+----------+----------+ | scale_id | items_id | +----------+----------+ | 1 | 1 | | 1 | 2 | +----------+----------+

Таблицы для вопросительной категории

+----+---------+----------+-----------+------------+ | id | name | isActive | isDeleted | createDate | +----+---------+----------+-----------+------------+ | 1 | General | 1 | 0 | 2014-09-25 | +----+---------+----------+-----------+------------+

Таблица вопросительных

+----+-----------------------------------------+------------+ | id | question | createDate | +----+-----------------------------------------+------------+ | 1 | Are you satisfied with the cleanliness? | 2014-09-25 | +----+-----------------------------------------+------------+

ManyToMany 'question_category'

+-------------+-------------+ | question_id | category_id | +-------------+-------------+ | 1 | 1 | +-------------+-------------+

Таблица опросник

+----+-------------------+---------+----------+-----------+------------+ | id | name | version | isActive | isDeleted | createDate | +----+-------------------+---------+----------+-----------+------------+ | 1 | General Questions | 2.2 | 1 | 0 | 2014-09-25 | +----+-------------------+---------+----------+-----------+------------+

Теперь база данных содержит весы и предметы, вопросы и категории и таблицу для вопросника. Теперь я создал большое отношение, чтобы задавать вопросы вопросникам с заданной шкалой. На различные вопросы можно задать вопрос по разным шкалам.

Таблица questionnaire_question_scale

+----+-------------+------------------+----------+------+--------+ | id | question_id | questionnaire_id | scale_id | page | hash | +----+-------------+------------------+----------+------+--------+ | 1 | 1 | 1 | 1 | 1 | X321Z1 | +----+-------------+------------------+----------+------+--------+

На заключительном этапе я создать таблицу отношение назначить вопросник к нескольким пользователям.

Таблица questionnaire_user

+---------+------------------+ | user_id | questionnaire_id | +---------+------------------+ | 21 | 1 | +---------+------------------+

Теперь, если журнал пользователя в воздам указанные выше информацию как форма и здесь начинается моя проблема :)

Я думаю, что мое решение было неэффективным, так как если многие пользователи входят в систему, чтобы заполнить анкету, я должен генерировать каждый раз, когда вопросник (сложная структура) является формой.

Это конец для меня, к сожалению, я не знаю дальше.

Я был бы очень благодарен за идеи, советы и решение подходов

+1

Посмотрите на пакеты опросов или опросов: https://packagist.org/search/?tags=survey https://packagist.org/packages/bait/poll-bundle или https://github.com/ Bodaclick/EnquiryBundle – Damien

+1

Вы можете создавать формы динамически, следуя этому: http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html. Но вам почти наверняка будет лучше с существующим пакетом. – Cerad

ответ

0

Если вы хотите построить его самостоятельно: я предлагаю создать тип формы, объявив его в качестве службы и инъекционного хранилище форм (объяснено ниже) в нем. Для его хранения в базе данных: вы можете создать две сущности (фактически создание отдельного объекта для каждого поля кажется лучше, но для простоты я использую два объекта): один для форм: YourBundle:Form и один для вашей формы - поля YourBundle:FormField .the Form объект может содержать только id и name и имеет взаимную связь to FormField. данные, хранящиеся в FormField, будут: ассоциация «много-к-одному» с Form - имя поля - тип поля - параметры поля. Вы можете сохранить параметры как Json или другие форматы, а затем декодировать их.

Смежные вопросы