(この種の質問を投稿するのに適切な場所でない場合は、喜んで別の場所に投稿します)
会社のリソースを管理するためのインタラクティブな Web アプリケーションを構築しようとしています。私は Symfony2 の経験がありますが、この新しいアプリケーションで壁にぶつかりました。
このアプリケーションをクライアント側で非常にインタラクティブにしたいと考えています。ほぼ完全な 1 つの Web ページ アプリケーション。以前の Web アプリケーションでは通常、CRUD ページで典型的な MVC パターンを使用していました。
それらの単純なアプリケーションでは、私が持っているでしょう
/employees/
/employees/create
/employees/detail/45
/employees/update/45
/employees/delete/45
この種のアプリケーションで symfony を使用すると、多くの利点が得られます。
- ルーティング
- セキュリティ (CSRF トークン)
- FormTypes とフォーム処理
- 検証
- Doctrine との統合
- 小枝
特に Twig のこのような機能は非常に新鮮でした (私のモデルは Doctrine エンティティとして構築されていたため):
<p>{{ employee.getCurrentTask().description }}</p>
私が今直面している問題は、Symfony2 が実際には単一の Web ページ アプリケーション用に構築されていないように感じることです。Ajax 機能を追加しようとするとすぐに、次の問題に直面します。
- CSRF トークンが無効です
- jQuery で再利用できないビュー/プレゼンテーション ロジックが多すぎる
- IDなどを取得するためにhtmlにデータ属性を追加する...
次に、Knockout.js と Angularjs を調べましたが、Doctrine と Twig のすべての利点を失ったような気がします。とにかく、クライアント側でモデルを再構築する必要があり、その後、2 つの異なる場所でモデルを維持する必要があります。
だから私はこのアイデアを思いつきました:
- Symfony2 モデルとコントローラーを使用してデータをデータベースに保存しますが、symfony のコントローラーは JSON を送信して JSON を受信するだけです (FOSRestBundle かな?)
- AngularJS や KnockoutJS などのフレームワークを使用して、クライアント側でその JSON データを再構築し、双方向バインディングを使用します。
しかし、Doctrine2 Relationships、Form Validation、CSRF など、Symfony が既に解決しているが、フロントエンド js フレームワークを使用すると使用できない問題にどのように取り組むのでしょうか?
すべての提案を歓迎します!