ユーザーがログインできる単純な Web サイトがあるとします。ログインしているときに、そうでないユーザー (ゲスト) とは異なるメッセージを表示したいと考えています。このメッセージは、メッセージを追加することにより、プレースホルダーにレンダリングする必要があります。
これはどこで行うべきですか?ユーザーがログインしているかどうかをコントローラーに確認させ、プレースホルダーに追加することを考えていました$this->view->placeholder("sidebar")->append()
ユーザーがログインできる単純な Web サイトがあるとします。ログインしているときに、そうでないユーザー (ゲスト) とは異なるメッセージを表示したいと考えています。このメッセージは、メッセージを追加することにより、プレースホルダーにレンダリングする必要があります。
これはどこで行うべきですか?ユーザーがログインしているかどうかをコントローラーに確認させ、プレースホルダーに追加することを考えていました$this->view->placeholder("sidebar")->append()
より良い解決策は、現在のユーザーの認証ステータスに基づいてレイアウトを切り替えることです。これは、preDispatch のプラグイン、またはコントローラー内の preDispatch で行うことができます。表示ロジックをビュー レイヤーに配置することで、メッセージを変更したり、メッセージをすべて削除したりする場合に、下位レベルのコードを更新する必要がなくなります。
個人的には、コントローラー プラグインに含めることを選択します。これは、認証ステータスの確認とコントローラーから離れたビューの更新に関する懸念を抽象化し、将来作成するコントローラーに適切なコードを配置することを心配する必要がなくなるためです。
レイアウト自体に入れてみませんか?
たとえば、レイアウトに影響を与える次の状況がよくあります。ユーザーがログインしている場合、ユーザー名、プロファイルを表示/編集するためのリンク、およびログアウトするためのリンクを表示したいと考えています。彼がログインしていない場合は、ログインへのリンクと登録へのリンクを表示します。
このすべてを処理するコードはZend_Auth::hasIdentity()
、、、Zend_Auth::getIdentity()
およびurl()
ビュー ヘルパーを使用します。レイアウト コードを少しスリムに保つために、私はこれらすべてを のような独自のビュー ヘルパーにプッシュすることがよくありますauthLinks()
。
それは個人的な好みの問題です。私は常にその責任をビューに委任しているので、私の考えでは、ビューで処理する必要があります。