2014-09-23 87 views
0

我想在用戶有能力創建表單的應用程序中創建一個包。Symfony2動態表單構建器

這些表格將是不同答案的問卷。你知道是否已經存在類似的捆綁包?

如果它不存在。我應該如何繼續?我總是隻在像「Form \ Type \ UserType」這樣的文件上創建表單。

在這種情況下,必須從數據庫動態生成,對吧?只有我想念這個方法,任何人都可以提供一個關於如何實現這一點的提示嗎?

更新

也許我想的複雜。我不確定表單服務是否能解決我的問題。知道我創建了一個數據庫結構來描述我的初始狀況。

用戶可以在後面的記錄之後創建。

  • 刻度,刻度可以包含很多答案(是,否,也許,好,好......)
  • 一個問題類別
  • 一個問題,可以分配給許多類別和許多questionnairies
  • 問卷可以包含很多問題,用戶可以在這裏爲問題指定一個比例。

桌秤

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

表項

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

多對多 '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 | +----+-----------------------------------------+------------+

多對多 '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 | +----+-------------+------------------+----------+------+--------+

在最後的步驟i創建一個關係表的問卷分配給幾個用戶。

表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 2014-09-23 12:26:37

+1

您可以通過以下方式動態構建表單:http://symfony.com/doc/currentbook/form/dynamic_form_modification.html。但是你現在的套餐幾乎肯定會更好。 – Cerad 2014-09-23 13:47:19

回答

0

:我建議創建一個表單類型,它聲明爲一個服務和注射的形式儲存庫(進一步解釋下)爲了將其存儲在數據庫中,您可以創建兩個實體(實際上爲每個字段創建單獨的實體似乎更好,但爲了簡單起見,我使用了兩個實體):一個用於表單:YourBundle:Form,另一個用於表單 - 字段YourBundle:FormFieldForm實體只能包含idname以及與FormField的一對多關聯。您存儲在FormField中的數據將是:與Form的多對一關聯 - 字段名稱 - 字段類型 - 字段的選項。您可以將選項存儲爲Json或其他格式,並稍後將其解碼。