2011-04-18 95 views
0

比方说,我有一个简单的网站,用户可以登录。当他们登录后,我想向他们展示与不是(访客)用户不同的消息。此消息应通过将消息附加到占位符中呈现。应该从控制器修改占位符吗?

这应该在哪里完成?我想让我的控制器检查用户是否登录,然后通过$this->view->placeholder("sidebar")->append()

回答

2

为什么不把它放在布局本身?

例如,我经常遇到以下情况会影响我的布局:如果用户登录,我想显示他的用户名,查看/编辑他的个人资料的链接以及注销链接。如果他没有登录,那么我给他看一个登录链接和注册链接。

处理所有这些问题的代码使用Zend_Auth::hasIdentity()Zend_Auth::getIdentity()url()视图助手。为了让布局代码更加精简,我经常将所有这些都推到我自己的观点中,称为authLinks()

+0

我也以类似的方式做。 – Marcin 2011-04-19 02:49:19

+0

听起来不错,谢谢! – 2011-04-20 00:57:08

2

追加到占位符更好的解决方案可能是根据当前用户的身份验证状态切换布局。这可以通过preDispatch中的插件或控制器中的preDispatch完成。通过将显示逻辑放置在视图图层中,如果您决定更改消息或将其一并删除,则不必更新较低级别的代码。

我个人会选择它在controller plugin,因为它抽象了检查身份验证状态和更新视图从控制器的问题,并防止您不必担心将适当的代码放入您在未来。

1

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