2017-06-12 34 views
1

私はWebインターフェイスでもモバイルインターフェイス(おそらくIonic)を持つSymfony3アプリケーションを開発しています。 これまでのところ、FOSRestBundleとNelmioApiDocBundle(素晴らしいものbtw。)を使用してREST-APIを作成しました。NelmioApiDocBundle Sandbox機能でエンティティを表示/作成/削除できます。 言い換えれば、私はCRUDを実装するコントローラを作成しただけでなく、トランザクションとイベント処理も含んでいます。REST-API + Web-Interfaceでフォーム処理を処理する方法

これらのエンティティのいくつかのWebインターフェイスも提供したいので、対応するコントローラを作成し、createForm/submit/isValidなどを複製していることがわかりました。 フォーム処理を委任できればいいです(POST)を、永続性とロジックをすでに処理しているAPIコントローラに渡しますが、私はクイックサンドを実行しています。

誰かがこのようなことを試したことがありますか、そのような状況に対処する方法を提案していますか? いずれの回答も高く評価されています。 Jorgo

答えて

0

CommandCommand Busパターンを代わりに使用してください。 1,2,3。数多くの素晴らしいSymfonyバンドルがあります。 this one

だから、可能なアプローチがある:

  1. は(どんな行動せずに、セッターとゲッターとDTOのよ​​うなちょうどダムオブジェクト)コマンドを作成します
  2. は、コマンドのハンドラを作成し、その上そこにあなたのロジックを入れて。
  3. このコマンドをフォームのモデルとして使用します。
  4. このコマンドは、REST APIの入力データ・モデルとして使用します。 request body convertersを使用して、入力JSON/XMLをコマンドに変換してください。
  5. コマンドバスライブラリの実装で検証ミドルウェアで検証します(フォームを使用している場合は直接検証することも可能です)。
+0

ワウ!迅速な答えをありがとう。チェックアウトします! –

+0

これは幻想的です。私は問題の解決策を尋ねましたが、それだけでなく、プロジェクトの保守性を高めるインフラストラクチャーを作ることができるという洞察も私に伝えました。 私がまだ苦労しているのは、コマンドをフォームモデルとして使用する方法です。リクエスト、フォーム、エンティティはどのように一緒に遊ぶのですか? リクエストボディコンバーターはカストムでなければなりません。右?フォーム処理はどこで行われ、コマンドにはどのようなプロパティがありますか?フォーム提出はどのようにデータにアクセスできますか?あなたはこれをどうやって行うのかを実証するいくつかのfoo-code行を私にドロップできますか? –