2017-06-12 29 views
1

我正在開發一個Symfony3應用程序,該應用程序將具有Web界面,但也包含移動界面(可能是Ionic)。 到目前爲止,我已經使用FOSRestBundle和NelmioApiDocBundle創建了一個REST-API(令人驚歎的東西btw。),我可以使用NelmioApiDocBundle沙箱功能查看/創建/刪除實體。 換句話說,我創建了實現CRUD的控制器,但也包含事務和事件處理。如何使用REST-API + Web界面幹掉表單處理

現在我想爲這些實體提供一個Web界面,所以我創建了相應的控制器,並發現自己複製了createForm/submit/isValid等。 如果我可以委託表單處理(POST)到已經處理持久性和邏輯的API控制器,但我正在使用流沙。

有沒有人嘗試過這樣的事情,或者有建議如何解決這種情況? 任何答案高度讚賞。 Jorgo

回答

0

改爲使用CommandCommand Bus模式。 123。有很多很好的Symfony包,例如this one

所以可能的方法是:

  1. 創建命令(只是愚蠢的物體,像DTO與getter和setter方法,沒有任何行爲)
  2. 創建命令處理程序,並把有你的邏輯等等。
  3. 在表單中使用該命令作爲模型。
  4. 在REST API中使用該命令作爲輸入數據模型。只需使用request body converters即可將您的輸入JSON/XML轉換爲命令。
  5. 在命令總線庫實現中使用驗證中間件進行驗證(如果使用表單,也可以直接驗證它)。
+0

哇!感謝你及時的答覆。將退房! –

+0

這是一個幻想。我問了一個問題的解決方案,並且您不僅提供了我的解決方案,還深入瞭解如何創建能夠提高項目可維護性的基礎架構。 我還在掙扎,與如何使用命令作爲表單模型。請求,表單和實體如何一起玩? 請求身體轉換器將不得不是一個客戶。對?表單處理在哪裏發生,Command有哪些屬性?表單提交如何訪問數據?你能否給我介紹一些可以演示如何去做的foo代碼行? –