1

私は現在、システムのまともなアーキテクチャを見つけようとして壁に頭をぶつけていますが、ここで Symfony の専門家からの助けが必要だと思います. 通常の Web アプリ (HTML フォームなど) と RESTful API の 2 つのインターフェイスを持つ非常に単純なアプリケーションを構築しています。この 2 つは同じではありませんが、多くの CRUD 操作を共有しています。

2 つのバンドルがあり、それぞれに各インターフェイスに固有のコントローラーが含まれています。1 つは Form コンポーネントを使用してフォームを作成および検証し、もう 1 つは送信された形式 (JSON または XML) で要求からデータを解析するだけです。ただし、これはだめです。パラメータ バインディングや検証など、これら 2 つのインターフェイス間には多くの共有コードがあります。モデルは同じですが、ユーザーからデータを受け取り、モデルと対話する方法は、純粋なアンチ DRY です。

入力バインディングと検証を 1 つの抽象化された操作にする方法はありますか? 各コントローラーから Request オブジェクトを受け取り、各パラメーターを検証し、モデルと通信するクラスを作成することから始めました。API ではうまく機能しましたが、フォーム コンポーネントの利点を完全に失いました。

4

1 に答える 1

0

アクションごとに 2 つの異なるルートを使用してみることができますが、実際のアクションは同じです

blah_blah.blahbadeblah:
    pattern: /blah/
    defaults:
        _controller: "BlahBlahBundle:Blah:index"
        json: false

blah_blah.blahbadeblah_json:
    pattern: /json/blah/
    defaults:
        _controller: "BlahBlahBundle:Blah:index"
        json: true

そして、コントローラーの最後でチェックを行いjson、完全なテンプレートまたは最小限のものを含む JsonResponse で応答することができます。

于 2013-03-31T05:16:08.760 に答える