ZF2 ベースのサイトを開発しています。訪問者/ユーザーのステータスに関係なく、同じメイン ナビゲーションがあります。ユーザーのステータスと役割に応じて、別のコンポーネント/ナビゲーションを追加する必要があります。訪問者の場合、アイテムは
- 登録
- ログイン
- EN (実際にはドロップダウンで、他の利用可能な言語があります)
ログインしている通常のユーザーの場合、表示されます
- プロフィール
- ログアウト
- EN (上記の言語セレクター)
また、特定の役割/権限を持つ一部のユーザーには、追加の項目があります
ACL が肥大化しているように見えるため、RBAC を使用したいと考えています。また、現在ログインしているユーザー/ロールに追加の項目があるかどうかを確認するためだけに、完全な ACL をロードする必要があります (約 15 種類以上の異なるロールを取得しました)。
どうやってこれを達成したかを考えるのに時間を費やしたので、以下にいくつかのアイデアを示します。
- 空のナビゲーション コンテナーを作成し、ファクトリを作成します。工場では、認証と RBAC にアクセスし、ユーザーのステータス/ロールに応じてページを追加します。
- 可能なすべてのページを含む完全に読み込まれたナビゲーションを作成し、工場で認証と RBAC の助けを借りて、表示したくないページを非表示にします。
rd オプションは、ServiceLayer を介して RBAC を取得し、ナビゲーションを生成するビュー ヘルパーを使用することです。( ZF2 レイアウトでツイートを表示する方法と ZF2で説明したように: テンプレートにログイン ウィジェットを追加します。
- または、module.php でコントローラー プラグインまたはメソッドのみを作成し、MVC_Render または MVC_Dispatch イベントをリッスンして、目的のナビゲーションを生成し、出力をビュー変数に追加することもできます。
PS: 言語選択セクションに CSS クラスを追加する必要があるため、パーシャルを使用する必要があります。また、ナビゲーションはレイアウトに表示されます。