是否应该从控制器修改占位符?

时间:2011-04-18 20:36:25

标签: php model-view-controller zend-framework zend-view

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

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

附加到占位符

3 个答案:

答案 0 :(得分:2)

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

我个人会选择它在controller plugin中,因为它抽象了检查身份验证状态和更新远离控制器的视图的问题,并且可以防止您担心将适当的代码放在任何控制器中创造未来。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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