次のシナリオを想像してください。
- ユーザーとグループがあります。ManyToMany 関係をマップするための Membership エンティティもあります
- ユーザーは、自分がメンバーであるグループにコメントを作成、参加、退出、および送信できます。
アプリケーションにはいくつかの「メイン」テンプレートがあります。
- 最終更新グループ
- サインインしているユーザーがメンバーであるグループ
- 検索結果など、他のグループ一覧ページ
「ミニグループ」テンプレートもあり、#members、#comments、現在サインインしているユーザーがメンバーである場合、コメントがある場合、またはグループを作成した場合のマークなどの情報を表示します
メイン テンプレートは、ミニグループ テンプレートを含めてループして構築されます。
ミニグループ テンプレートは、ユーザーがメンバーであるかどうか、コメントがあるかどうかなどを知る必要があります...
このロジックをどのように管理しますか?
- グループのリストを含む各アクションのコントローラー内のすべてのデータを取得します
- ユーザーがメンバーである、またはコメントなどを持つ ID の配列を返すエンティティ メソッド。
- ログインが行われたときにこの配列をセッションに保存し、ユーザーがコメント、参加、退出したときに更新します...
ミニグループ テンプレートにケースを認識させるにはどうすればよいでしょうか。
- 各ミニグループは、include ステートメントからブール値「isMember」「hasComments」を受け取ることができます。
- 各ミニグループは、ユーザーがメンバーであるグループのリスト、コメントのリストなどを受け取ることができます。次に、現在のグループ ID がそのリストにあるかどうかを確認します。
現在、エンティティ メソッドとブール フラグを実装していますが、より慣用的または効率的な方法があるかどうかはわかりません。
{% set userGroups = app.user ? app.user.participatedGroupIds : {} %}
{% set userComments = app.user ? app.user.commentedGroupIds : {} %}
{% for group in groups %}
{% set vars = {'isMember':group.id in userGroups, 'hasComments':group.id in userComments} %}
{% include 'GroupBundle:Default:minigroup.html.twig' with vars %}
{% endfor %}
このシナリオをどのように管理しますか?
もっといい方法を知っていますか?
Thanks!