0

ユーザーがログインできる単純な Web サイトがあるとします。ログインしているときに、そうでないユーザー (ゲスト) とは異なるメッセージを表示したいと考えています。このメッセージは、メッセージを追加することにより、プレースホルダーにレンダリングする必要があります。

これはどこで行うべきですか?ユーザーがログインしているかどうかをコントローラーに確認させ、プレースホルダーに追加することを考えていました$this->view->placeholder("sidebar")->append()

4

3 に答える 3

2

より良い解決策は、現在のユーザーの認証ステータスに基づいてレイアウトを切り替えることです。これは、preDispatch のプラグイン、またはコントローラー内の preDispatch で行うことができます。表示ロジックをビュー レイヤーに配置することで、メッセージを変更したり、メッセージをすべて削除したりする場合に、下位レベルのコードを更新する必要がなくなります。

個人的には、コントローラー プラグインに含めることを選択します。これは、認証ステータスの確認とコントローラーから離れたビューの更新に関する懸念を抽象化し、将来作成するコントローラーに適切なコードを配置することを心配する必要がなくなるためです。

于 2011-04-18T20:59:47.323 に答える
2

レイアウト自体に入れてみませんか?

たとえば、レイアウトに影響を与える次の状況がよくあります。ユーザーがログインしている場合、ユーザー名、プロファイルを表示/編集するためのリンク、およびログアウトするためのリンクを表示したいと考えています。彼がログインしていない場合は、ログインへのリンクと登録へのリンクを表示します。

このすべてを処理するコードはZend_Auth::hasIdentity()、、、Zend_Auth::getIdentity()およびurl()ビュー ヘルパーを使用します。レイアウト コードを少しスリムに保つために、私はこれらすべてを のような独自のビュー ヘルパーにプッシュすることがよくありますauthLinks()

于 2011-04-19T00:26:05.947 に答える
1

それは個人的な好みの問題です。私は常にその責任をビューに委任しているので、私の考えでは、ビューで処理する必要があります。

于 2011-04-18T21:00:19.513 に答える