2016-06-07 59 views
0

我有麻煩找到最好的方法來實現的下一個場景一個Symfony的形式:Symfony的形式預填充數據

我有一組實體的存儲目錄清單中(Checklists->組 - >任務 - >糾正動作),這些清單可以由實體站實施。

在這個實施中,如果分數低於5,電臺將爲每項任務提供一個分數,每項糾正措施將出現一個複選框,以便電臺選擇實施它...

我在原始的HTML編碼形式如何看起來像:

How the form looks like

我的問題是我不知道如何將這種遷移到Symfony的類型形式。

我不知道如何加載映射的字段(組,任務和糾正措施)的列表,然後創建映射字段的關係(每個任務選擇的分數和各任務selecteds糾正措施)

顯然我沒有要求我可以複製和粘貼的代碼,我需要關於如何實現這個或一些可以幫助我的文檔的想法。

我與Symfony的3.1.0和下一個實體的工作:

Checklist-> ChecklistGroup-> ChecklistGroupTask-> ChecklistGroupTaskCorrective VVV StationChecklist - > StationChecklistTask - > StationCheckListTaskCorrectives

沒有創造StationChecklistGroup,因爲我不打算爲組添加任何類型的字段,或者我應該添加它嗎?

編輯 如果它有幫助,這裏是我的數據庫結構,也許我可以更好地實現它(一些領域缺失)。這是西班牙語,但我認爲你能理解它,punto_venta是我站的實體: DB Mapping

回答

0

你的問題是相當模糊的一些看法,所以我會盡力幫助你就像我可以:

  • 要處理表單元素的集合(例如您的任務組),您應該使用CollectionType

  • 將未映射的表單轉換爲真實的實體是一個令人沮喪的表單組件的使用,所以嘗試使用data_classes包含FormTypes。

  • IMO你應該有一個FormType爲你的每個實體映射它。因此,當用戶創建清單時,呈現一個ChecklistFormType,該清單將具有groups字段(CollectionTypeGroupFormTypes)。然後用tasks場(的CorrectiveActionsFormTypeCollectionType)等

  • 之後,創建GroupFormType,面臨的挑戰將是使你的代碼可重用的Stations,但我在這裏問了一下你的模型:是StationChecklists真的不同於Checklists?和StationChecklistTasksChecklistGroupTasks?也許你可以使用接口或超類更好地映射這些相似的實體,然後讓FormType映射這些接口/超類,而不是實際的子實體。

+0

是的,我陷入了這個挑戰。我已經可以創建清單了,而且我按照您對每個實體的FormType建議的方式完成了清單。我的StationChecklist實體基本上是一個與實體Checklist和實體站連接的表格,添加了一些字段,如「DateLimit」和「ImplementationDate」。 然後StationChecklistTasks將包含每個任務的得分,並且它與StationChecklist和ChecklistTask一起被加入... 最後,StationChecklistTaskCorrective只添加一個布爾字段來知道已經執行了哪些糾正措施。 – Kynethix

+0

當用戶創建一個StationChecklist時它是如何工作的?表單與清單相同,但最初需要選擇一個工作站? – Terenoth

+0

首先,用戶選擇在哪個站想要操作以及要執行什麼清單,然後將選定的清單ID和選定的站點ID發送到新的控制器,然後我可以通過檢索到的ID來加載實體。 – Kynethix