1

次のシナリオを想像してください。

  • ユーザーとグループがあります。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!

4

1 に答える 1