0

假设我有一个简单的网站,用户可以在其中登录。当他们登录时,我想向他们显示与未登录的用户(客人)不同的消息。此消息应通过将消息附加到占位符来呈现。

这应该在哪里完成?我正在考虑让我的控制器检查用户是否登录,然后通过附加到占位符$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()view-helper。为了使布局代码更精简,我经常将所有这些都推送到我自己的视图助手中,称为authLinks().

于 2011-04-19T00:26:05.947 回答
1

这是个人喜好的问题。我总是将这个责任委托给视图,所以在我看来是的,它应该由视图处理。

于 2011-04-18T21:00:19.513 回答